<html>
<head><meta charset="utf-8"><title>analyzing where the compiler spends its time · t-compiler · Zulip Chat Archive</title></head>
<h2>Stream: <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/index.html">t-compiler</a></h2>
<h3>Topic: <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/analyzing.20where.20the.20compiler.20spends.20its.20time.html">analyzing where the compiler spends its time</a></h3>

<hr>

<base href="https://rust-lang.zulipchat.com">

<head><link href="https://rust-lang.github.io/zulip_archive/style.css" rel="stylesheet"></head>

<a name="148647180"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/analyzing%20where%20the%20compiler%20spends%20its%20time/near/148647180" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/analyzing.20where.20the.20compiler.20spends.20its.20time.html#148647180">(Nov 27 2018 at 16:01)</a>:</h4>
<p>So one of the follow-up items from our last steering meeting was:</p>
<blockquote>
<p>gather statistics about where we spend our time from perf and perhaps elsewhere</p>
</blockquote>
<p>I was wondering whether <span class="user-mention" data-user-id="125250">@Wesley Wiser</span>, <span class="user-mention" data-user-id="120989">@nnethercote</span>,  or anyone else might be interesting in taking a stab at this. I figured we'd <em>start</em> by selecting some benchmarks and designing a methodology.</p>
<p>Actually, maybe the approach we should do is to schedule a 1hr slot or so to work out the plan, and then open up some issues?</p>



<a name="148647204"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/analyzing%20where%20the%20compiler%20spends%20its%20time/near/148647204" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/analyzing.20where.20the.20compiler.20spends.20its.20time.html#148647204">(Nov 27 2018 at 16:01)</a>:</h4>
<p><span class="user-mention" data-user-id="124287">@mw</span> do you still feel good about your "scenarios"</p>



<a name="148648142"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/analyzing%20where%20the%20compiler%20spends%20its%20time/near/148648142" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> mw <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/analyzing.20where.20the.20compiler.20spends.20its.20time.html#148648142">(Nov 27 2018 at 16:12)</a>:</h4>
<p>The RLS case does not measure actual RLS performance very well.</p>



<a name="148648155"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/analyzing%20where%20the%20compiler%20spends%20its%20time/near/148648155" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Wesley Wiser <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/analyzing.20where.20the.20compiler.20spends.20its.20time.html#148648155">(Nov 27 2018 at 16:12)</a>:</h4>
<p><span class="user-mention" data-user-id="116009">@nikomatsakis</span> I'm interested and always happy to help out where I can.</p>



<a name="148648158"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/analyzing%20where%20the%20compiler%20spends%20its%20time/near/148648158" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> mw <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/analyzing.20where.20the.20compiler.20spends.20its.20time.html#148648158">(Nov 27 2018 at 16:12)</a>:</h4>
<p>It should maybe be renamed to CHECK</p>



<a name="148648208"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/analyzing%20where%20the%20compiler%20spends%20its%20time/near/148648208" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/analyzing.20where.20the.20compiler.20spends.20its.20time.html#148648208">(Nov 27 2018 at 16:13)</a>:</h4>
<p>maybe we could meet to dsicuss and plan out tomorrow, say around 10am boston time( same as compiler mtg)?</p>



<a name="148648224"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/analyzing%20where%20the%20compiler%20spends%20its%20time/near/148648224" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/analyzing.20where.20the.20compiler.20spends.20its.20time.html#148648224">(Nov 27 2018 at 16:13)</a>:</h4>
<p>I'm not feeling well today and it's late for <span class="user-mention" data-user-id="124287">@mw</span></p>



<a name="148648227"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/analyzing%20where%20the%20compiler%20spends%20its%20time/near/148648227" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> mw <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/analyzing.20where.20the.20compiler.20spends.20its.20time.html#148648227">(Nov 27 2018 at 16:13)</a>:</h4>
<p>I'm not so sure about the DIST scenario. It's important, but it's compile time might not be too important</p>



<a name="148648231"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/analyzing%20where%20the%20compiler%20spends%20its%20time/near/148648231" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/analyzing.20where.20the.20compiler.20spends.20its.20time.html#148648231">(Nov 27 2018 at 16:13)</a>:</h4>
<p>not sure <span class="user-mention" data-user-id="125250">@Wesley Wiser</span> what your constraints are tho</p>



<a name="148648246"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/analyzing%20where%20the%20compiler%20spends%20its%20time/near/148648246" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/analyzing.20where.20the.20compiler.20spends.20its.20time.html#148648246">(Nov 27 2018 at 16:14)</a>:</h4>
<p>of course we could chat on zulip</p>



<a name="148648322"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/analyzing%20where%20the%20compiler%20spends%20its%20time/near/148648322" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Wesley Wiser <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/analyzing.20where.20the.20compiler.20spends.20its.20time.html#148648322">(Nov 27 2018 at 16:14)</a>:</h4>
<p>Zulip is always fine and I probably find time to schedule a 1hr meeting in</p>



<a name="148648361"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/analyzing%20where%20the%20compiler%20spends%20its%20time/near/148648361" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> mw <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/analyzing.20where.20the.20compiler.20spends.20its.20time.html#148648361">(Nov 27 2018 at 16:15)</a>:</h4>
<p>tomorrow works for me</p>



<a name="148648769"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/analyzing%20where%20the%20compiler%20spends%20its%20time/near/148648769" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/analyzing.20where.20the.20compiler.20spends.20its.20time.html#148648769">(Nov 27 2018 at 16:21)</a>:</h4>
<p>I will create a calendar invite</p>



<a name="148651749"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/analyzing%20where%20the%20compiler%20spends%20its%20time/near/148651749" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> blitzerr <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/analyzing.20where.20the.20compiler.20spends.20its.20time.html#148651749">(Nov 27 2018 at 17:02)</a>:</h4>
<p><span class="user-mention" data-user-id="116009">@nikomatsakis</span>  <span class="user-mention" data-user-id="125250">@Wesley Wiser</span> <span class="user-mention" data-user-id="120989">@nnethercote</span> and <span class="user-mention" data-user-id="124287">@mw</span>  I am interested in optimization problems but unfortunately don't know enough. If someone is willing to coach me, I would love to take a piece of the work.</p>



<a name="148653225"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/analyzing%20where%20the%20compiler%20spends%20its%20time/near/148653225" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nagisa <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/analyzing.20where.20the.20compiler.20spends.20its.20time.html#148653225">(Nov 27 2018 at 17:23)</a>:</h4>
<p>I want to get full tracing of queries and whatever else compiler does. I think it should be fairly easy to derive information about perf from that.</p>



<a name="148718166"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/analyzing%20where%20the%20compiler%20spends%20its%20time/near/148718166" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/analyzing.20where.20the.20compiler.20spends.20its.20time.html#148718166">(Nov 28 2018 at 15:16)</a>:</h4>
<p>hey <span class="user-mention" data-user-id="124287">@mw</span> <span class="user-mention" data-user-id="125250">@Wesley Wiser</span> —</p>



<a name="148718175"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/analyzing%20where%20the%20compiler%20spends%20its%20time/near/148718175" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/analyzing.20where.20the.20compiler.20spends.20its.20time.html#148718175">(Nov 28 2018 at 15:16)</a>:</h4>
<p>so I just woke up from a nap :)</p>



<a name="148718180"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/analyzing%20where%20the%20compiler%20spends%20its%20time/near/148718180" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/analyzing.20where.20the.20compiler.20spends.20its.20time.html#148718180">(Nov 28 2018 at 15:17)</a>:</h4>
<p>want to chat?</p>



<a name="148718377"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/analyzing%20where%20the%20compiler%20spends%20its%20time/near/148718377" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> mw <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/analyzing.20where.20the.20compiler.20spends.20its.20time.html#148718377">(Nov 28 2018 at 15:19)</a>:</h4>
<p><span class="emoji emoji-1f44b" title="wave">:wave:</span></p>



<a name="148718382"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/analyzing%20where%20the%20compiler%20spends%20its%20time/near/148718382" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Wesley Wiser <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/analyzing.20where.20the.20compiler.20spends.20its.20time.html#148718382">(Nov 28 2018 at 15:19)</a>:</h4>
<p><span class="emoji emoji-1f44b" title="wave">:wave:</span></p>



<a name="148718391"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/analyzing%20where%20the%20compiler%20spends%20its%20time/near/148718391" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/analyzing.20where.20the.20compiler.20spends.20its.20time.html#148718391">(Nov 28 2018 at 15:19)</a>:</h4>
<p>we could chat over video but maybe zulip will suffice?</p>



<a name="148718463"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/analyzing%20where%20the%20compiler%20spends%20its%20time/near/148718463" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> mw <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/analyzing.20where.20the.20compiler.20spends.20its.20time.html#148718463">(Nov 28 2018 at 15:20)</a>:</h4>
<p>both is fine with me</p>



<a name="148718464"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/analyzing%20where%20the%20compiler%20spends%20its%20time/near/148718464" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Wesley Wiser <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/analyzing.20where.20the.20compiler.20spends.20its.20time.html#148718464">(Nov 28 2018 at 15:20)</a>:</h4>
<p>Whichever works for me</p>



<a name="148718471"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/analyzing%20where%20the%20compiler%20spends%20its%20time/near/148718471" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/analyzing.20where.20the.20compiler.20spends.20its.20time.html#148718471">(Nov 28 2018 at 15:20)</a>:</h4>
<p>mainly I was hoping we could kind of draw up a "plan" regarding what to measure</p>



<a name="148718504"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/analyzing%20where%20the%20compiler%20spends%20its%20time/near/148718504" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/analyzing.20where.20the.20compiler.20spends.20its.20time.html#148718504">(Nov 28 2018 at 15:21)</a>:</h4>
<p>I'm trying now to bring some of this back in cache a bit</p>



<a name="148718554"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/analyzing%20where%20the%20compiler%20spends%20its%20time/near/148718554" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> mw <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/analyzing.20where.20the.20compiler.20spends.20its.20time.html#148718554">(Nov 28 2018 at 15:21)</a>:</h4>
<p><span class="user-mention" data-user-id="125250">@Wesley Wiser</span> and I chatted a bit about making <code>-Zself-profile</code> more detailed</p>



<a name="148718571"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/analyzing%20where%20the%20compiler%20spends%20its%20time/near/148718571" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> mw <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/analyzing.20where.20the.20compiler.20spends.20its.20time.html#148718571">(Nov 28 2018 at 15:21)</a>:</h4>
<p>i.e. I gave him my wishlist :)</p>



<a name="148718681"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/analyzing%20where%20the%20compiler%20spends%20its%20time/near/148718681" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/analyzing.20where.20the.20compiler.20spends.20its.20time.html#148718681">(Nov 28 2018 at 15:23)</a>:</h4>
<p>=)</p>



<a name="148718712"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/analyzing%20where%20the%20compiler%20spends%20its%20time/near/148718712" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/analyzing.20where.20the.20compiler.20spends.20its.20time.html#148718712">(Nov 28 2018 at 15:23)</a>:</h4>
<p><span class="user-mention" data-user-id="124287">@mw</span> where was the list of issues you had for different scenarios?</p>



<a name="148718718"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/analyzing%20where%20the%20compiler%20spends%20its%20time/near/148718718" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> mw <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/analyzing.20where.20the.20compiler.20spends.20its.20time.html#148718718">(Nov 28 2018 at 15:24)</a>:</h4>
<p><a href="https://github.com/rust-lang/rust/issues/48750" target="_blank" title="https://github.com/rust-lang/rust/issues/48750">https://github.com/rust-lang/rust/issues/48750</a></p>



<a name="148718753"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/analyzing%20where%20the%20compiler%20spends%20its%20time/near/148718753" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/analyzing.20where.20the.20compiler.20spends.20its.20time.html#148718753">(Nov 28 2018 at 15:24)</a>:</h4>
<p>also, maybe we can separate out future impovements to self-profile from things we can measure now?</p>



<a name="148718786"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/analyzing%20where%20the%20compiler%20spends%20its%20time/near/148718786" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/analyzing.20where.20the.20compiler.20spends.20its.20time.html#148718786">(Nov 28 2018 at 15:24)</a>:</h4>
<p>(in other words, can we make measurements without those, or do we feel like we have to do self-profile improvements?)</p>



<a name="148718790"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/analyzing%20where%20the%20compiler%20spends%20its%20time/near/148718790" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> mw <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/analyzing.20where.20the.20compiler.20spends.20its.20time.html#148718790">(Nov 28 2018 at 15:24)</a>:</h4>
<p>yes, let's start with defining a goal for the conversation</p>



<a name="148718792"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/analyzing%20where%20the%20compiler%20spends%20its%20time/near/148718792" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/analyzing.20where.20the.20compiler.20spends.20its.20time.html#148718792">(Nov 28 2018 at 15:24)</a>:</h4>
<p>I guess we could use the perf measurements</p>



<a name="148718826"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/analyzing%20where%20the%20compiler%20spends%20its%20time/near/148718826" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/analyzing.20where.20the.20compiler.20spends.20its.20time.html#148718826">(Nov 28 2018 at 15:25)</a>:</h4>
<p>my main goal is to help us drive our prioritization for upcoming year</p>



<a name="148718834"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/analyzing%20where%20the%20compiler%20spends%20its%20time/near/148718834" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> mw <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/analyzing.20where.20the.20compiler.20spends.20its.20time.html#148718834">(Nov 28 2018 at 15:25)</a>:</h4>
<p>are we interested in defining a methodology for measuring compiler performance?</p>



<a name="148718846"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/analyzing%20where%20the%20compiler%20spends%20its%20time/near/148718846" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> mw <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/analyzing.20where.20the.20compiler.20spends.20its.20time.html#148718846">(Nov 28 2018 at 15:25)</a>:</h4>
<p>because that would be a big topic</p>



<a name="148718917"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/analyzing%20where%20the%20compiler%20spends%20its%20time/near/148718917" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/analyzing.20where.20the.20compiler.20spends.20its.20time.html#148718917">(Nov 28 2018 at 15:26)</a>:</h4>
<p>I'm not entirely sure what that means</p>



<a name="148718934"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/analyzing%20where%20the%20compiler%20spends%20its%20time/near/148718934" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/analyzing.20where.20the.20compiler.20spends.20its.20time.html#148718934">(Nov 28 2018 at 15:26)</a>:</h4>
<p>I think I was imagining something less ambitious though</p>



<a name="148718940"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/analyzing%20where%20the%20compiler%20spends%20its%20time/near/148718940" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> mw <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/analyzing.20where.20the.20compiler.20spends.20its.20time.html#148718940">(Nov 28 2018 at 15:26)</a>:</h4>
<p>yes, me too</p>



<a name="148718941"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/analyzing%20where%20the%20compiler%20spends%20its%20time/near/148718941" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/analyzing.20where.20the.20compiler.20spends.20its.20time.html#148718941">(Nov 28 2018 at 15:26)</a>:</h4>
<p>more like identifying a set of specific test cases and specific things we can figure out from them</p>



<a name="148718958"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/analyzing%20where%20the%20compiler%20spends%20its%20time/near/148718958" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> mw <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/analyzing.20where.20the.20compiler.20spends.20its.20time.html#148718958">(Nov 28 2018 at 15:27)</a>:</h4>
<p>(but <a href="https://github.com/rust-lang/rust/issues/48750" target="_blank" title="https://github.com/rust-lang/rust/issues/48750">https://github.com/rust-lang/rust/issues/48750</a> is more ambitious :) )</p>



<a name="148719038"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/analyzing%20where%20the%20compiler%20spends%20its%20time/near/148719038" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Wesley Wiser <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/analyzing.20where.20the.20compiler.20spends.20its.20time.html#148719038">(Nov 28 2018 at 15:28)</a>:</h4>
<p>I looked at the meeting notes and the discussion around profiling seemed to be in the context of determining how much time is spent prior to the start of the query system. The discussion seemed to mostly be about pushing more early stuff into queries <a href="#narrow/stream/131828-t-compiler/subject/steering.20meeting.202018-11-16/near/147824772" title="#narrow/stream/131828-t-compiler/subject/steering.20meeting.202018-11-16/near/147824772">https://rust-lang.zulipchat.com/#narrow/stream/131828-t-compiler/subject/steering.20meeting.202018-11-16/near/147824772</a></p>



<a name="148719073"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/analyzing%20where%20the%20compiler%20spends%20its%20time/near/148719073" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/analyzing.20where.20the.20compiler.20spends.20its.20time.html#148719073">(Nov 28 2018 at 15:28)</a>:</h4>
<p>I think I would probably start with things like "major phases":</p>
<ul>
<li>how much time is spent doing trait solving</li>
<li>type-checking</li>
<li>parsing</li>
<li>macro expansion</li>
<li>resolution</li>
<li>trans</li>
<li>collection</li>
<li>LLVM optimization</li>
</ul>
<p>and perhaps "incremental overhead" (ratio of from-scratch builds) as well as "current incremental potential" (ratio of "no-change builds")?</p>



<a name="148719100"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/analyzing%20where%20the%20compiler%20spends%20its%20time/near/148719100" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/analyzing.20where.20the.20compiler.20spends.20its.20time.html#148719100">(Nov 28 2018 at 15:29)</a>:</h4>
<p>I figure <span class="user-mention" data-user-id="124287">@mw</span> that the best way to design a more complete system is to first do some specific things for specific tests</p>



<a name="148719102"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/analyzing%20where%20the%20compiler%20spends%20its%20time/near/148719102" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/analyzing.20where.20the.20compiler.20spends.20its.20time.html#148719102">(Nov 28 2018 at 15:29)</a>:</h4>
<p>and then generalize</p>



<a name="148719204"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/analyzing%20where%20the%20compiler%20spends%20its%20time/near/148719204" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> mw <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/analyzing.20where.20the.20compiler.20spends.20its.20time.html#148719204">(Nov 28 2018 at 15:30)</a>:</h4>
<p>do the <code>-Zself-profile</code> categories match with the list above?</p>



<a name="148719208"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/analyzing%20where%20the%20compiler%20spends%20its%20time/near/148719208" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/analyzing.20where.20the.20compiler.20spends.20its.20time.html#148719208">(Nov 28 2018 at 15:30)</a>:</h4>
<p>I don't know :)</p>



<a name="148719216"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/analyzing%20where%20the%20compiler%20spends%20its%20time/near/148719216" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Wesley Wiser <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/analyzing.20where.20the.20compiler.20spends.20its.20time.html#148719216">(Nov 28 2018 at 15:30)</a>:</h4>
<p>We don't have as many categories</p>



<a name="148719227"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/analyzing%20where%20the%20compiler%20spends%20its%20time/near/148719227" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> mw <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/analyzing.20where.20the.20compiler.20spends.20its.20time.html#148719227">(Nov 28 2018 at 15:30)</a>:</h4>
<p>roughly, but not entirely</p>



<a name="148719235"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/analyzing%20where%20the%20compiler%20spends%20its%20time/near/148719235" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/analyzing.20where.20the.20compiler.20spends.20its.20time.html#148719235">(Nov 28 2018 at 15:30)</a>:</h4>
<p>I guess it would be possible to tweak them</p>



<a name="148719237"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/analyzing%20where%20the%20compiler%20spends%20its%20time/near/148719237" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/analyzing.20where.20the.20compiler.20spends.20its.20time.html#148719237">(Nov 28 2018 at 15:30)</a>:</h4>
<p>I was looking at <a href="https://www.draw.io/?state={%22ids%22:[%221pI_69tI8uz83Sd7V7TvzltRACFUDPoO2%22],%22action%22:%22open%22,%22userId%22:%22114050878502958257910%22}#G1pI_69tI8uz83Sd7V7TvzltRACFUDPoO2" target="_blank" title="https://www.draw.io/?state={%22ids%22:[%221pI_69tI8uz83Sd7V7TvzltRACFUDPoO2%22],%22action%22:%22open%22,%22userId%22:%22114050878502958257910%22}#G1pI_69tI8uz83Sd7V7TvzltRACFUDPoO2">my diagram</a></p>



<a name="148719253"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/analyzing%20where%20the%20compiler%20spends%20its%20time/near/148719253" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Wesley Wiser <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/analyzing.20where.20the.20compiler.20spends.20its.20time.html#148719253">(Nov 28 2018 at 15:31)</a>:</h4>
<p><a href="https://github.com/rust-lang/rust/blob/master/src/librustc/util/profiling.rs#L125" target="_blank" title="https://github.com/rust-lang/rust/blob/master/src/librustc/util/profiling.rs#L125">https://github.com/rust-lang/rust/blob/master/src/librustc/util/profiling.rs#L125</a></p>



<a name="148719270"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/analyzing%20where%20the%20compiler%20spends%20its%20time/near/148719270" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Wesley Wiser <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/analyzing.20where.20the.20compiler.20spends.20its.20time.html#148719270">(Nov 28 2018 at 15:31)</a>:</h4>
<p>We can certainly tweak them</p>



<a name="148719278"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/analyzing%20where%20the%20compiler%20spends%20its%20time/near/148719278" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/analyzing.20where.20the.20compiler.20spends.20its.20time.html#148719278">(Nov 28 2018 at 15:31)</a>:</h4>
<p>it seems like we definitely want to get a handle on what parsing/name-resolution/macro-expansion costs, because that informs the "extend query system earlier" question</p>



<a name="148719294"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/analyzing%20where%20the%20compiler%20spends%20its%20time/near/148719294" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> mw <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/analyzing.20where.20the.20compiler.20spends.20its.20time.html#148719294">(Nov 28 2018 at 15:31)</a>:</h4>
<p>yes</p>



<a name="148719345"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/analyzing%20where%20the%20compiler%20spends%20its%20time/near/148719345" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/analyzing.20where.20the.20compiler.20spends.20its.20time.html#148719345">(Nov 28 2018 at 15:32)</a>:</h4>
<p>I imagine trying to get the costs of trait selection etc -- which is a cross-cutting thing, not easily handled by <code>-Zself-profile</code>, but relatively easily handled by <code>perf-focus</code> -- would be of interest too</p>



<a name="148719355"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/analyzing%20where%20the%20compiler%20spends%20its%20time/near/148719355" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/analyzing.20where.20the.20compiler.20spends.20its.20time.html#148719355">(Nov 28 2018 at 15:32)</a>:</h4>
<p>I've measured it before but I'd like to update it, particularly in light of existing work on chalk</p>



<a name="148719382"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/analyzing%20where%20the%20compiler%20spends%20its%20time/near/148719382" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/analyzing.20where.20the.20compiler.20spends.20its.20time.html#148719382">(Nov 28 2018 at 15:32)</a>:</h4>
<p>One thing I don't really know is how to estimate the impact of MIR <em>optimizations</em></p>



<a name="148719387"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/analyzing%20where%20the%20compiler%20spends%20its%20time/near/148719387" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> mw <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/analyzing.20where.20the.20compiler.20spends.20its.20time.html#148719387">(Nov 28 2018 at 15:32)</a>:</h4>
<p>only half of trait selection is a query, right?</p>



<a name="148719401"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/analyzing%20where%20the%20compiler%20spends%20its%20time/near/148719401" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/analyzing.20where.20the.20compiler.20spends.20its.20time.html#148719401">(Nov 28 2018 at 15:33)</a>:</h4>
<p>some parts of trait selection are queries, yeah, but some parts aren't</p>



<a name="148719424"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/analyzing%20where%20the%20compiler%20spends%20its%20time/near/148719424" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/analyzing.20where.20the.20compiler.20spends.20its.20time.html#148719424">(Nov 28 2018 at 15:33)</a>:</h4>
<p>(part of the chalk transition plan is to finish that conversion)</p>



<a name="148719439"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/analyzing%20where%20the%20compiler%20spends%20its%20time/near/148719439" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> mw <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/analyzing.20where.20the.20compiler.20spends.20its.20time.html#148719439">(Nov 28 2018 at 15:33)</a>:</h4>
<p>what about "polymorphization"?</p>



<a name="148719473"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/analyzing%20where%20the%20compiler%20spends%20its%20time/near/148719473" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> mw <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/analyzing.20where.20the.20compiler.20spends.20its.20time.html#148719473">(Nov 28 2018 at 15:34)</a>:</h4>
<p>that seems like something that we could get numbers on</p>



<a name="148719509"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/analyzing%20where%20the%20compiler%20spends%20its%20time/near/148719509" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> mw <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/analyzing.20where.20the.20compiler.20spends.20its.20time.html#148719509">(Nov 28 2018 at 15:34)</a>:</h4>
<p>i.e. how much LLVM IR would we save by deduplication</p>



<a name="148719512"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/analyzing%20where%20the%20compiler%20spends%20its%20time/near/148719512" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/analyzing.20where.20the.20compiler.20spends.20its.20time.html#148719512">(Nov 28 2018 at 15:34)</a>:</h4>
<p>right so we can get some rough bounds</p>



<a name="148719515"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/analyzing%20where%20the%20compiler%20spends%20its%20time/near/148719515" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/analyzing.20where.20the.20compiler.20spends.20its.20time.html#148719515">(Nov 28 2018 at 15:34)</a>:</h4>
<p>it'd be nice to know:</p>



<a name="148719526"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/analyzing%20where%20the%20compiler%20spends%20its%20time/near/148719526" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/analyzing.20where.20the.20compiler.20spends.20its.20time.html#148719526">(Nov 28 2018 at 15:34)</a>:</h4>
<ul>
<li>how much LLVM IR results from monomorphized copies (i.e., more than one copy)</li>
</ul>



<a name="148719546"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/analyzing%20where%20the%20compiler%20spends%20its%20time/near/148719546" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/analyzing.20where.20the.20compiler.20spends.20its.20time.html#148719546">(Nov 28 2018 at 15:35)</a>:</h4>
<ul>
<li>how much LLVM's existing mergefunc can remove</li>
</ul>



<a name="148719649"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/analyzing%20where%20the%20compiler%20spends%20its%20time/near/148719649" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> mw <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/analyzing.20where.20the.20compiler.20spends.20its.20time.html#148719649">(Nov 28 2018 at 15:36)</a>:</h4>
<p>ok, so we have three specific questions so far:</p>



<a name="148719663"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/analyzing%20where%20the%20compiler%20spends%20its%20time/near/148719663" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> mw <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/analyzing.20where.20the.20compiler.20spends.20its.20time.html#148719663">(Nov 28 2018 at 15:36)</a>:</h4>
<ul>
<li>how much time is spent before queries</li>
</ul>



<a name="148719674"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/analyzing%20where%20the%20compiler%20spends%20its%20time/near/148719674" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> mw <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/analyzing.20where.20the.20compiler.20spends.20its.20time.html#148719674">(Nov 28 2018 at 15:36)</a>:</h4>
<ul>
<li>how much could we save by polymorphization</li>
</ul>



<a name="148719685"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/analyzing%20where%20the%20compiler%20spends%20its%20time/near/148719685" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> mw <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/analyzing.20where.20the.20compiler.20spends.20its.20time.html#148719685">(Nov 28 2018 at 15:37)</a>:</h4>
<ul>
<li>how much time is spent in trait selection</li>
</ul>



<a name="148719709"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/analyzing%20where%20the%20compiler%20spends%20its%20time/near/148719709" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> mw <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/analyzing.20where.20the.20compiler.20spends.20its.20time.html#148719709">(Nov 28 2018 at 15:37)</a>:</h4>
<p>I would add another one:</p>



<a name="148719723"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/analyzing%20where%20the%20compiler%20spends%20its%20time/near/148719723" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> mw <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/analyzing.20where.20the.20compiler.20spends.20its.20time.html#148719723">(Nov 28 2018 at 15:37)</a>:</h4>
<ul>
<li>how much time can we save via parallel queries</li>
</ul>



<a name="148719732"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/analyzing%20where%20the%20compiler%20spends%20its%20time/near/148719732" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/analyzing.20where.20the.20compiler.20spends.20its.20time.html#148719732">(Nov 28 2018 at 15:37)</a>:</h4>
<p>I was wondering about that</p>



<a name="148719737"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/analyzing%20where%20the%20compiler%20spends%20its%20time/near/148719737" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/analyzing.20where.20the.20compiler.20spends.20its.20time.html#148719737">(Nov 28 2018 at 15:37)</a>:</h4>
<p>how are you planning to estimate that?</p>



<a name="148719739"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/analyzing%20where%20the%20compiler%20spends%20its%20time/near/148719739" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> mw <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/analyzing.20where.20the.20compiler.20spends.20its.20time.html#148719739">(Nov 28 2018 at 15:37)</a>:</h4>
<p>because that's something we can measure right now</p>



<a name="148719805"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/analyzing%20where%20the%20compiler%20spends%20its%20time/near/148719805" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/analyzing.20where.20the.20compiler.20spends.20its.20time.html#148719805">(Nov 28 2018 at 15:38)</a>:</h4>
<p>I'd also like to capture the "where in general do we spend our time" -- e.g. I have some "rule of thumb" numbers of like "50% type check, 50% trans/LLVM" that I think are pretty dated, and I would like to update</p>



<a name="148719814"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/analyzing%20where%20the%20compiler%20spends%20its%20time/near/148719814" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/analyzing.20where.20the.20compiler.20spends.20its.20time.html#148719814">(Nov 28 2018 at 15:38)</a>:</h4>
<blockquote>
<p>because that's something we can measure right now</p>
</blockquote>
<p>using the existing support?</p>



<a name="148719821"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/analyzing%20where%20the%20compiler%20spends%20its%20time/near/148719821" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> mw <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/analyzing.20where.20the.20compiler.20spends.20its.20time.html#148719821">(Nov 28 2018 at 15:38)</a>:</h4>
<p>well, we can get an upper bound by finding out how much time we spend in queries to begin with</p>



<a name="148719829"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/analyzing%20where%20the%20compiler%20spends%20its%20time/near/148719829" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> mw <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/analyzing.20where.20the.20compiler.20spends.20its.20time.html#148719829">(Nov 28 2018 at 15:38)</a>:</h4>
<p>yes</p>



<a name="148719855"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/analyzing%20where%20the%20compiler%20spends%20its%20time/near/148719855" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> mw <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/analyzing.20where.20the.20compiler.20spends.20its.20time.html#148719855">(Nov 28 2018 at 15:39)</a>:</h4>
<p>this ties back into -Zself-profile</p>



<a name="148719861"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/analyzing%20where%20the%20compiler%20spends%20its%20time/near/148719861" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> mw <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/analyzing.20where.20the.20compiler.20spends.20its.20time.html#148719861">(Nov 28 2018 at 15:39)</a>:</h4>
<p>I think</p>



<a name="148719868"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/analyzing%20where%20the%20compiler%20spends%20its%20time/near/148719868" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/analyzing.20where.20the.20compiler.20spends.20its.20time.html#148719868">(Nov 28 2018 at 15:39)</a>:</h4>
<p>so if we can answer those bullets you raised plus maybe a fifth of </p>
<ul>
<li>breakdown of time into high-level phases (roughly what <code>-Zself-profile</code> is designed to produce)</li>
</ul>
<p>that'd be amazing</p>



<a name="148719872"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/analyzing%20where%20the%20compiler%20spends%20its%20time/near/148719872" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> mw <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/analyzing.20where.20the.20compiler.20spends.20its.20time.html#148719872">(Nov 28 2018 at 15:39)</a>:</h4>
<p>we would need to split LLVM and "codegen" though</p>



<a name="148719878"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/analyzing%20where%20the%20compiler%20spends%20its%20time/near/148719878" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/analyzing.20where.20the.20compiler.20spends.20its.20time.html#148719878">(Nov 28 2018 at 15:39)</a>:</h4>
<p>now the question is -- for which crates to measure :)</p>



<a name="148719879"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/analyzing%20where%20the%20compiler%20spends%20its%20time/near/148719879" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Wesley Wiser <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/analyzing.20where.20the.20compiler.20spends.20its.20time.html#148719879">(Nov 28 2018 at 15:39)</a>:</h4>
<p>Yeah, we'd need to make <code>-Zself-profile</code> work with parallel queries</p>



<a name="148719881"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/analyzing%20where%20the%20compiler%20spends%20its%20time/near/148719881" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/analyzing.20where.20the.20compiler.20spends.20its.20time.html#148719881">(Nov 28 2018 at 15:39)</a>:</h4>
<blockquote>
<p>we would need to split LLVM and "codegen" though</p>
</blockquote>
<p>yes, I'd like to see those separated</p>



<a name="148719887"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/analyzing%20where%20the%20compiler%20spends%20its%20time/near/148719887" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Wesley Wiser <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/analyzing.20where.20the.20compiler.20spends.20its.20time.html#148719887">(Nov 28 2018 at 15:39)</a>:</h4>
<p>(It doesn't currently)</p>



<a name="148719974"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/analyzing%20where%20the%20compiler%20spends%20its%20time/near/148719974" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> mw <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/analyzing.20where.20the.20compiler.20spends.20its.20time.html#148719974">(Nov 28 2018 at 15:40)</a>:</h4>
<p>we can start without integrating self-profile and parallel queries, I think</p>



<a name="148719991"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/analyzing%20where%20the%20compiler%20spends%20its%20time/near/148719991" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> mw <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/analyzing.20where.20the.20compiler.20spends.20its.20time.html#148719991">(Nov 28 2018 at 15:40)</a>:</h4>
<p>i.e. finding out how much time we spend in queries to begin with</p>



<a name="148720019"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/analyzing%20where%20the%20compiler%20spends%20its%20time/near/148720019" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> mw <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/analyzing.20where.20the.20compiler.20spends.20its.20time.html#148720019">(Nov 28 2018 at 15:41)</a>:</h4>
<p>regarding which crates to measure:</p>



<a name="148720035"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/analyzing%20where%20the%20compiler%20spends%20its%20time/near/148720035" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> mw <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/analyzing.20where.20the.20compiler.20spends.20its.20time.html#148720035">(Nov 28 2018 at 15:41)</a>:</h4>
<ul>
<li>it would be great to have some kind of aggregation over the perf.rlo measurements</li>
</ul>



<a name="148720060"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/analyzing%20where%20the%20compiler%20spends%20its%20time/near/148720060" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> mw <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/analyzing.20where.20the.20compiler.20spends.20its.20time.html#148720060">(Nov 28 2018 at 15:41)</a>:</h4>
<ul>
<li>I think that crates can be quite different, so a simple aggregation might be misleading :/</li>
</ul>



<a name="148720143"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/analyzing%20where%20the%20compiler%20spends%20its%20time/near/148720143" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/analyzing.20where.20the.20compiler.20spends.20its.20time.html#148720143">(Nov 28 2018 at 15:42)</a>:</h4>
<p>hmm</p>



<a name="148720151"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/analyzing%20where%20the%20compiler%20spends%20its%20time/near/148720151" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/analyzing.20where.20the.20compiler.20spends.20its.20time.html#148720151">(Nov 28 2018 at 15:42)</a>:</h4>
<p>this is a typical challenge</p>



<a name="148720179"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/analyzing%20where%20the%20compiler%20spends%20its%20time/near/148720179" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> mw <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/analyzing.20where.20the.20compiler.20spends.20its.20time.html#148720179">(Nov 28 2018 at 15:42)</a>:</h4>
<p>but we can try to pick a good "middleground" crate</p>



<a name="148720195"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/analyzing%20where%20the%20compiler%20spends%20its%20time/near/148720195" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> mw <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/analyzing.20where.20the.20compiler.20spends.20its.20time.html#148720195">(Nov 28 2018 at 15:43)</a>:</h4>
<p>i.e. something that has a bit of everything?</p>



<a name="148720227"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/analyzing%20where%20the%20compiler%20spends%20its%20time/near/148720227" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> mw <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/analyzing.20where.20the.20compiler.20spends.20its.20time.html#148720227">(Nov 28 2018 at 15:43)</a>:</h4>
<p>or maybe the larger the project, the better?</p>



<a name="148720230"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/analyzing%20where%20the%20compiler%20spends%20its%20time/near/148720230" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/analyzing.20where.20the.20compiler.20spends.20its.20time.html#148720230">(Nov 28 2018 at 15:43)</a>:</h4>
<p>to the extent that we're going to have to do manual profiling</p>



<a name="148720343"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/analyzing%20where%20the%20compiler%20spends%20its%20time/near/148720343" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/analyzing.20where.20the.20compiler.20spends.20its.20time.html#148720343">(Nov 28 2018 at 15:43)</a>:</h4>
<p>I'd like to avoid measuring a ton of crates</p>



<a name="148720427"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/analyzing%20where%20the%20compiler%20spends%20its%20time/near/148720427" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> mw <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/analyzing.20where.20the.20compiler.20spends.20its.20time.html#148720427">(Nov 28 2018 at 15:43)</a>:</h4>
<p>yeah</p>



<a name="148720434"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/analyzing%20where%20the%20compiler%20spends%20its%20time/near/148720434" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/analyzing.20where.20the.20compiler.20spends.20its.20time.html#148720434">(Nov 28 2018 at 15:43)</a>:</h4>
<p>but maybe that's arguing for us setting up more automated variants ;)</p>



<a name="148720459"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/analyzing%20where%20the%20compiler%20spends%20its%20time/near/148720459" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/analyzing.20where.20the.20compiler.20spends.20its.20time.html#148720459">(Nov 28 2018 at 15:44)</a>:</h4>
<p>I feel like I'd like to measure the stylo/script crates</p>



<a name="148720490"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/analyzing%20where%20the%20compiler%20spends%20its%20time/near/148720490" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/analyzing.20where.20the.20compiler.20spends.20its.20time.html#148720490">(Nov 28 2018 at 15:44)</a>:</h4>
<p>since they are "in production" and known pain points</p>



<a name="148720499"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/analyzing%20where%20the%20compiler%20spends%20its%20time/near/148720499" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> mw <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/analyzing.20where.20the.20compiler.20spends.20its.20time.html#148720499">(Nov 28 2018 at 15:44)</a>:</h4>
<p>yeah</p>



<a name="148720503"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/analyzing%20where%20the%20compiler%20spends%20its%20time/near/148720503" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/analyzing.20where.20the.20compiler.20spends.20its.20time.html#148720503">(Nov 28 2018 at 15:44)</a>:</h4>
<p>I wonder if it would make sense to measure librustc</p>



<a name="148720509"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/analyzing%20where%20the%20compiler%20spends%20its%20time/near/148720509" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/analyzing.20where.20the.20compiler.20spends.20its.20time.html#148720509">(Nov 28 2018 at 15:44)</a>:</h4>
<p>it seems pretty dang slow to me</p>



<a name="148720512"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/analyzing%20where%20the%20compiler%20spends%20its%20time/near/148720512" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/analyzing.20where.20the.20compiler.20spends.20its.20time.html#148720512">(Nov 28 2018 at 15:44)</a>:</h4>
<p>and/or libstd</p>



<a name="148720533"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/analyzing%20where%20the%20compiler%20spends%20its%20time/near/148720533" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/analyzing.20where.20the.20compiler.20spends.20its.20time.html#148720533">(Nov 28 2018 at 15:44)</a>:</h4>
<p>not sure if they are "representative" but they are near and dear to <em>our</em> hearts :)</p>



<a name="148720588"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/analyzing%20where%20the%20compiler%20spends%20its%20time/near/148720588" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> mw <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/analyzing.20where.20the.20compiler.20spends.20its.20time.html#148720588">(Nov 28 2018 at 15:45)</a>:</h4>
<p>yeah</p>



<a name="148720592"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/analyzing%20where%20the%20compiler%20spends%20its%20time/near/148720592" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/analyzing.20where.20the.20compiler.20spends.20its.20time.html#148720592">(Nov 28 2018 at 15:45)</a>:</h4>
<p>I wonder if we could do a sort of "breadth-first search" approach -- basically, try to measure a few crates and see how much they diverge (probably we should aim for things likely to diverge)</p>



<a name="148720597"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/analyzing%20where%20the%20compiler%20spends%20its%20time/near/148720597" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/analyzing.20where.20the.20compiler.20spends.20its.20time.html#148720597">(Nov 28 2018 at 15:45)</a>:</h4>
<p>if they are all showing similar results, we can stop</p>



<a name="148720603"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/analyzing%20where%20the%20compiler%20spends%20its%20time/near/148720603" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/analyzing.20where.20the.20compiler.20spends.20its.20time.html#148720603">(Nov 28 2018 at 15:45)</a>:</h4>
<p>if we are seeing a lot of variation, we can draw some more samples</p>



<a name="148720610"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/analyzing%20where%20the%20compiler%20spends%20its%20time/near/148720610" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/analyzing.20where.20the.20compiler.20spends.20its.20time.html#148720610">(Nov 28 2018 at 15:45)</a>:</h4>
<p>I am imagining trying to pick from the various categories you drew up</p>



<a name="148720617"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/analyzing%20where%20the%20compiler%20spends%20its%20time/near/148720617" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> mw <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/analyzing.20where.20the.20compiler.20spends.20its.20time.html#148720617">(Nov 28 2018 at 15:45)</a>:</h4>
<p>I mean, when I think of perf.rlo results in general: most optimization benefit all crates</p>



<a name="148720629"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/analyzing%20where%20the%20compiler%20spends%20its%20time/near/148720629" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> mw <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/analyzing.20where.20the.20compiler.20spends.20its.20time.html#148720629">(Nov 28 2018 at 15:45)</a>:</h4>
<p>unless they are edge cases</p>



<a name="148720701"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/analyzing%20where%20the%20compiler%20spends%20its%20time/near/148720701" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/analyzing.20where.20the.20compiler.20spends.20its.20time.html#148720701">(Nov 28 2018 at 15:46)</a>:</h4>
<p>yes</p>



<a name="148720711"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/analyzing%20where%20the%20compiler%20spends%20its%20time/near/148720711" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/analyzing.20where.20the.20compiler.20spends.20its.20time.html#148720711">(Nov 28 2018 at 15:46)</a>:</h4>
<p>it would be helpful at some point to go over perf and try to categorize</p>



<a name="148720718"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/analyzing%20where%20the%20compiler%20spends%20its%20time/near/148720718" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/analyzing.20where.20the.20compiler.20spends.20its.20time.html#148720718">(Nov 28 2018 at 15:46)</a>:</h4>
<p>I have some feeling for this from NLL</p>



<a name="148720734"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/analyzing%20where%20the%20compiler%20spends%20its%20time/near/148720734" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/analyzing.20where.20the.20compiler.20spends.20its.20time.html#148720734">(Nov 28 2018 at 15:46)</a>:</h4>
<p>though my memory is fading :)</p>



<a name="148720739"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/analyzing%20where%20the%20compiler%20spends%20its%20time/near/148720739" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/analyzing.20where.20the.20compiler.20spends.20its.20time.html#148720739">(Nov 28 2018 at 15:46)</a>:</h4>
<p>but e.g. keccak is an edge case, very very large CFG, otherwise very simple</p>



<a name="148720764"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/analyzing%20where%20the%20compiler%20spends%20its%20time/near/148720764" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Wesley Wiser <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/analyzing.20where.20the.20compiler.20spends.20its.20time.html#148720764">(Nov 28 2018 at 15:47)</a>:</h4>
<p>Targeting "general" crates makes sense to me. It seems like people complain about compiler perf for most crates not just the edge-case ones.</p>



<a name="148720771"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/analyzing%20where%20the%20compiler%20spends%20its%20time/near/148720771" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> mw <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/analyzing.20where.20the.20compiler.20spends.20its.20time.html#148720771">(Nov 28 2018 at 15:47)</a>:</h4>
<p>yeah, the various *-stress crates too</p>



<a name="148720785"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/analyzing%20where%20the%20compiler%20spends%20its%20time/near/148720785" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> mw <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/analyzing.20where.20the.20compiler.20spends.20its.20time.html#148720785">(Nov 28 2018 at 15:47)</a>:</h4>
<p>I agree</p>



<a name="148720792"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/analyzing%20where%20the%20compiler%20spends%20its%20time/near/148720792" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/analyzing.20where.20the.20compiler.20spends.20its.20time.html#148720792">(Nov 28 2018 at 15:47)</a>:</h4>
<p>I think we should measure </p>
<ul>
<li>serde-*</li>
<li>ripgrep-*</li>
</ul>



<a name="148720803"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/analyzing%20where%20the%20compiler%20spends%20its%20time/near/148720803" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/analyzing.20where.20the.20compiler.20spends.20its.20time.html#148720803">(Nov 28 2018 at 15:47)</a>:</h4>
<p>well let's try to look at the categories I guess</p>



<a name="148720855"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/analyzing%20where%20the%20compiler%20spends%20its%20time/near/148720855" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/analyzing.20where.20the.20compiler.20spends.20its.20time.html#148720855">(Nov 28 2018 at 15:48)</a>:</h4>
<p>well I guess this is distinct from the scenarios in <a href="https://github.com/rust-lang/rust/issues/48750" target="_blank" title="https://github.com/rust-lang/rust/issues/48750">https://github.com/rust-lang/rust/issues/48750</a></p>



<a name="148721060"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/analyzing%20where%20the%20compiler%20spends%20its%20time/near/148721060" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> mw <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/analyzing.20where.20the.20compiler.20spends.20its.20time.html#148721060">(Nov 28 2018 at 15:49)</a>:</h4>
<p>yes</p>



<a name="148721191"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/analyzing%20where%20the%20compiler%20spends%20its%20time/near/148721191" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/analyzing.20where.20the.20compiler.20spends.20its.20time.html#148721191">(Nov 28 2018 at 15:49)</a>:</h4>
<p>I am imagining sort of :</p>
<ul>
<li>application (ripgrep)</li>
<li>popular libraries (serde, maybe regex)</li>
<li>large and complex (script, rustc?)</li>
</ul>



<a name="148721319"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/analyzing%20where%20the%20compiler%20spends%20its%20time/near/148721319" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/analyzing.20where.20the.20compiler.20spends.20its.20time.html#148721319">(Nov 28 2018 at 15:49)</a>:</h4>
<p>serde is interesting because maybe some costs from using it are deferred until the code is instantiated</p>



<a name="148721324"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/analyzing%20where%20the%20compiler%20spends%20its%20time/near/148721324" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Wesley Wiser <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/analyzing.20where.20the.20compiler.20spends.20its.20time.html#148721324">(Nov 28 2018 at 15:49)</a>:</h4>
<p>Is winapi still super slow?</p>



<a name="148721333"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/analyzing%20where%20the%20compiler%20spends%20its%20time/near/148721333" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/analyzing.20where.20the.20compiler.20spends.20its.20time.html#148721333">(Nov 28 2018 at 15:49)</a>:</h4>
<p>since I imagine it's tons of generics</p>



<a name="148721334"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/analyzing%20where%20the%20compiler%20spends%20its%20time/near/148721334" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/analyzing.20where.20the.20compiler.20spends.20its.20time.html#148721334">(Nov 28 2018 at 15:49)</a>:</h4>
<p>mm good call</p>



<a name="148721337"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/analyzing%20where%20the%20compiler%20spends%20its%20time/near/148721337" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Wesley Wiser <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/analyzing.20where.20the.20compiler.20spends.20its.20time.html#148721337">(Nov 28 2018 at 15:49)</a>:</h4>
<p>I guess that's hard to measure since you have to build on Windows</p>



<a name="148721338"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/analyzing%20where%20the%20compiler%20spends%20its%20time/near/148721338" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/analyzing.20where.20the.20compiler.20spends.20its.20time.html#148721338">(Nov 28 2018 at 15:50)</a>:</h4>
<p>measuring on windows is hard of course</p>



<a name="148721385"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/analyzing%20where%20the%20compiler%20spends%20its%20time/near/148721385" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/analyzing.20where.20the.20compiler.20spends.20its.20time.html#148721385">(Nov 28 2018 at 15:50)</a>:</h4>
<p>:(</p>



<a name="148721411"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/analyzing%20where%20the%20compiler%20spends%20its%20time/near/148721411" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/analyzing.20where.20the.20compiler.20spends.20its.20time.html#148721411">(Nov 28 2018 at 15:50)</a>:</h4>
<p>maybe I can justify buying that Surface Pro after all ;)</p>



<a name="148721421"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/analyzing%20where%20the%20compiler%20spends%20its%20time/near/148721421" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> mw <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/analyzing.20where.20the.20compiler.20spends.20its.20time.html#148721421">(Nov 28 2018 at 15:50)</a>:</h4>
<p>it also depends on the version, I think</p>



<a name="148721427"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/analyzing%20where%20the%20compiler%20spends%20its%20time/near/148721427" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> mw <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/analyzing.20where.20the.20compiler.20spends.20its.20time.html#148721427">(Nov 28 2018 at 15:50)</a>:</h4>
<p>newer versions are faster to compile</p>



<a name="148721439"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/analyzing%20where%20the%20compiler%20spends%20its%20time/near/148721439" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Wesley Wiser <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/analyzing.20where.20the.20compiler.20spends.20its.20time.html#148721439">(Nov 28 2018 at 15:50)</a>:</h4>
<p>Yeah, I seem to recall they restructured the crate to make it faster</p>



<a name="148721444"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/analyzing%20where%20the%20compiler%20spends%20its%20time/near/148721444" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> mw <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/analyzing.20where.20the.20compiler.20spends.20its.20time.html#148721444">(Nov 28 2018 at 15:50)</a>:</h4>
<p>but I think there are some open issues on GH about winapi being slow</p>



<a name="148721445"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/analyzing%20where%20the%20compiler%20spends%20its%20time/near/148721445" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/analyzing.20where.20the.20compiler.20spends.20its.20time.html#148721445">(Nov 28 2018 at 15:51)</a>:</h4>
<p>I sort of recall <span class="user-mention" data-user-id="124287">@mw</span> that we tried to do a categorization of this kind at <em>some</em> point</p>



<a name="148721484"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/analyzing%20where%20the%20compiler%20spends%20its%20time/near/148721484" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> mw <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/analyzing.20where.20the.20compiler.20spends.20its.20time.html#148721484">(Nov 28 2018 at 15:51)</a>:</h4>
<p>yeah, probably as part of setting up perf.rlo</p>



<a name="148721491"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/analyzing%20where%20the%20compiler%20spends%20its%20time/near/148721491" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> mw <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/analyzing.20where.20the.20compiler.20spends.20its.20time.html#148721491">(Nov 28 2018 at 15:51)</a>:</h4>
<p>and/or the scenarios</p>



<a name="148721543"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/analyzing%20where%20the%20compiler%20spends%20its%20time/near/148721543" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> mw <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/analyzing.20where.20the.20compiler.20spends.20its.20time.html#148721543">(Nov 28 2018 at 15:52)</a>:</h4>
<p>ok, so...</p>



<a name="148721549"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/analyzing%20where%20the%20compiler%20spends%20its%20time/near/148721549" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/analyzing.20where.20the.20compiler.20spends.20its.20time.html#148721549">(Nov 28 2018 at 15:52)</a>:</h4>
<p>ps only mildly related but I missed <a href="https://github.com/rust-lang/rust/issues/48750#issuecomment-400148645" target="_blank" title="https://github.com/rust-lang/rust/issues/48750#issuecomment-400148645">this insightful comment</a> from <span class="user-mention" data-user-id="120989">@nnethercote</span> somehow.</p>



<a name="148721556"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/analyzing%20where%20the%20compiler%20spends%20its%20time/near/148721556" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/analyzing.20where.20the.20compiler.20spends.20its.20time.html#148721556">(Nov 28 2018 at 15:52)</a>:</h4>
<p>(about how to weight multiple runs)</p>



<a name="148721558"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/analyzing%20where%20the%20compiler%20spends%20its%20time/near/148721558" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> mw <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/analyzing.20where.20the.20compiler.20spends.20its.20time.html#148721558">(Nov 28 2018 at 15:52)</a>:</h4>
<p>so far we've only talked about "raw" compilation performance</p>



<a name="148721572"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/analyzing%20where%20the%20compiler%20spends%20its%20time/near/148721572" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> mw <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/analyzing.20where.20the.20compiler.20spends.20its.20time.html#148721572">(Nov 28 2018 at 15:52)</a>:</h4>
<p>do we care about RLS?</p>



<a name="148721575"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/analyzing%20where%20the%20compiler%20spends%20its%20time/near/148721575" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/analyzing.20where.20the.20compiler.20spends.20its.20time.html#148721575">(Nov 28 2018 at 15:52)</a>:</h4>
<p>well</p>



<a name="148721577"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/analyzing%20where%20the%20compiler%20spends%20its%20time/near/148721577" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> mw <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/analyzing.20where.20the.20compiler.20spends.20its.20time.html#148721577">(Nov 28 2018 at 15:53)</a>:</h4>
<p>I mean, of course, we care :)</p>



<a name="148721578"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/analyzing%20where%20the%20compiler%20spends%20its%20time/near/148721578" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/analyzing.20where.20the.20compiler.20spends.20its.20time.html#148721578">(Nov 28 2018 at 15:53)</a>:</h4>
<p>what do you mean by RLS, to start :)</p>



<a name="148721591"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/analyzing%20where%20the%20compiler%20spends%20its%20time/near/148721591" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> mw <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/analyzing.20where.20the.20compiler.20spends.20its.20time.html#148721591">(Nov 28 2018 at 15:53)</a>:</h4>
<p>the actual RLS</p>



<a name="148721607"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/analyzing%20where%20the%20compiler%20spends%20its%20time/near/148721607" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/analyzing.20where.20the.20compiler.20spends.20its.20time.html#148721607">(Nov 28 2018 at 15:53)</a>:</h4>
<p>so</p>



<a name="148721614"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/analyzing%20where%20the%20compiler%20spends%20its%20time/near/148721614" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/analyzing.20where.20the.20compiler.20spends.20its.20time.html#148721614">(Nov 28 2018 at 15:53)</a>:</h4>
<p>what I mean is</p>



<a name="148721622"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/analyzing%20where%20the%20compiler%20spends%20its%20time/near/148721622" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/analyzing.20where.20the.20compiler.20spends.20its.20time.html#148721622">(Nov 28 2018 at 15:53)</a>:</h4>
<p>I guess it'd be useful just to measure save-analysis</p>



<a name="148721668"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/analyzing%20where%20the%20compiler%20spends%20its%20time/near/148721668" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/analyzing.20where.20the.20compiler.20spends.20its.20time.html#148721668">(Nov 28 2018 at 15:54)</a>:</h4>
<p>and whatever else the RLS does <em>literally right now</em></p>



<a name="148721683"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/analyzing%20where%20the%20compiler%20spends%20its%20time/near/148721683" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/analyzing.20where.20the.20compiler.20spends.20its.20time.html#148721683">(Nov 28 2018 at 15:54)</a>:</h4>
<p>it's also interesting to try and estimate what are the biggest obstacles to the RLS being able to interactively invoke the compiler, but I think that some of our measurements (e.g., looking at parse time etc) are relevant to that</p>



<a name="148721686"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/analyzing%20where%20the%20compiler%20spends%20its%20time/near/148721686" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> mw <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/analyzing.20where.20the.20compiler.20spends.20its.20time.html#148721686">(Nov 28 2018 at 15:54)</a>:</h4>
<p>yes, we don't have any numbers on that at all, I think</p>



<a name="148721709"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/analyzing%20where%20the%20compiler%20spends%20its%20time/near/148721709" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/analyzing.20where.20the.20compiler.20spends.20its.20time.html#148721709">(Nov 28 2018 at 15:55)</a>:</h4>
<p>I'm sort of inclined to measure the things we listed and then "reconvene"</p>



<a name="148721722"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/analyzing%20where%20the%20compiler%20spends%20its%20time/near/148721722" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> mw <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/analyzing.20where.20the.20compiler.20spends.20its.20time.html#148721722">(Nov 28 2018 at 15:55)</a>:</h4>
<p>since our time is almost up, can we try to distill some concrete action items?</p>



<a name="148721723"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/analyzing%20where%20the%20compiler%20spends%20its%20time/near/148721723" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/analyzing.20where.20the.20compiler.20spends.20its.20time.html#148721723">(Nov 28 2018 at 15:55)</a>:</h4>
<p>though maybe it'd be good to at least figure out how to measure RLS  save analysis</p>



<a name="148721796"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/analyzing%20where%20the%20compiler%20spends%20its%20time/near/148721796" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> mw <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/analyzing.20where.20the.20compiler.20spends.20its.20time.html#148721796">(Nov 28 2018 at 15:56)</a>:</h4>
<p>an easy one would be separating codegen and LLVM in self-profile</p>



<a name="148721803"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/analyzing%20where%20the%20compiler%20spends%20its%20time/near/148721803" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> mw <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/analyzing.20where.20the.20compiler.20spends.20its.20time.html#148721803">(Nov 28 2018 at 15:56)</a>:</h4>
<p>that would also be useful, I think</p>



<a name="148721849"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/analyzing%20where%20the%20compiler%20spends%20its%20time/near/148721849" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Wesley Wiser <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/analyzing.20where.20the.20compiler.20spends.20its.20time.html#148721849">(Nov 28 2018 at 15:57)</a>:</h4>
<p>Is "codegen" the time spent emitting LLVM BC but not time running LLVM passes + linking?</p>



<a name="148721878"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/analyzing%20where%20the%20compiler%20spends%20its%20time/near/148721878" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> mw <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/analyzing.20where.20the.20compiler.20spends.20its.20time.html#148721878">(Nov 28 2018 at 15:58)</a>:</h4>
<p>yes</p>



<a name="148721974"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/analyzing%20where%20the%20compiler%20spends%20its%20time/near/148721974" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> mw <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/analyzing.20where.20the.20compiler.20spends.20its.20time.html#148721974">(Nov 28 2018 at 15:59)</a>:</h4>
<p>do we want to create a "benchmark" repository ?</p>



<a name="148721979"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/analyzing%20where%20the%20compiler%20spends%20its%20time/near/148721979" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/analyzing.20where.20the.20compiler.20spends.20its.20time.html#148721979">(Nov 28 2018 at 15:59)</a>:</h4>
<p>let's review. We identified a few "raw perf" measurements that'd be useful:</p>
<ul>
<li>how much time is spent before queries</li>
<li>how much could we save by polymorphization (get some rough bounds to start?)</li>
<li>how much time is spent in trait selection</li>
<li>how much time can we save via parallel queries</li>
<li>rough breakdown of where we spend our time, ideally into something like this?<br>
    - parser<br>
    - resolution/macro-expansion<br>
    - type-checking<br>
    - borrow-checking<br>
    - MIR optimization<br>
    - translation<br>
    - LLVM optimization</li>
</ul>
<p>We mentioned the idea of measuring on a few crates like:</p>
<ul>
<li>popular library:<ul>
<li>serde-*</li>
<li>regex</li>
</ul>
</li>
<li>big and important:<ul>
<li>script</li>
<li>stylo </li>
<li>rustc</li>
</ul>
</li>
</ul>
<p>and see where that goes</p>



<a name="148721990"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/analyzing%20where%20the%20compiler%20spends%20its%20time/near/148721990" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/analyzing.20where.20the.20compiler.20spends.20its.20time.html#148721990">(Nov 28 2018 at 15:59)</a>:</h4>
<blockquote>
<p>do we want to create a "benchmark" repository ?</p>
</blockquote>
<p>well, we have the existing one, right?</p>



<a name="148722007"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/analyzing%20where%20the%20compiler%20spends%20its%20time/near/148722007" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/analyzing.20where.20the.20compiler.20spends.20its.20time.html#148722007">(Nov 28 2018 at 15:59)</a>:</h4>
<p>one action item would be:</p>
<ul>
<li>measure trait selection time for those crates :)</li>
</ul>



<a name="148722009"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/analyzing%20where%20the%20compiler%20spends%20its%20time/near/148722009" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/analyzing.20where.20the.20compiler.20spends.20its.20time.html#148722009">(Nov 28 2018 at 15:59)</a>:</h4>
<p>I can take that one on</p>



<a name="148722067"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/analyzing%20where%20the%20compiler%20spends%20its%20time/near/148722067" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/analyzing.20where.20the.20compiler.20spends.20its.20time.html#148722067">(Nov 28 2018 at 16:00)</a>:</h4>
<p>(I guess we have to settle on a specific rustc)</p>



<a name="148722091"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/analyzing%20where%20the%20compiler%20spends%20its%20time/near/148722091" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Wesley Wiser <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/analyzing.20where.20the.20compiler.20spends.20its.20time.html#148722091">(Nov 28 2018 at 16:00)</a>:</h4>
<p>2018 beta compiler?</p>



<a name="148722108"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/analyzing%20where%20the%20compiler%20spends%20its%20time/near/148722108" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> mw <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/analyzing.20where.20the.20compiler.20spends.20its.20time.html#148722108">(Nov 28 2018 at 16:00)</a>:</h4>
<p>why not :)</p>



<a name="148722166"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/analyzing%20where%20the%20compiler%20spends%20its%20time/near/148722166" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> mw <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/analyzing.20where.20the.20compiler.20spends.20its.20time.html#148722166">(Nov 28 2018 at 16:01)</a>:</h4>
<p>I'll look into parallel query performance</p>



<a name="148722202"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/analyzing%20where%20the%20compiler%20spends%20its%20time/near/148722202" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/analyzing.20where.20the.20compiler.20spends.20its.20time.html#148722202">(Nov 28 2018 at 16:01)</a>:</h4>
<blockquote>
<p>an easy one would be separating codegen and LLVM in self-profile</p>
</blockquote>
<p><span class="user-mention" data-user-id="125250">@Wesley Wiser</span> do you want to try adjusting self-profile then?</p>



<a name="148722245"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/analyzing%20where%20the%20compiler%20spends%20its%20time/near/148722245" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Wesley Wiser <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/analyzing.20where.20the.20compiler.20spends.20its.20time.html#148722245">(Nov 28 2018 at 16:02)</a>:</h4>
<p>Sure!</p>



<a name="148722259"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/analyzing%20where%20the%20compiler%20spends%20its%20time/near/148722259" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> mw <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/analyzing.20where.20the.20compiler.20spends.20its.20time.html#148722259">(Nov 28 2018 at 16:02)</a>:</h4>
<p>can you add the percentage column too?</p>



<a name="148722265"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/analyzing%20where%20the%20compiler%20spends%20its%20time/near/148722265" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/analyzing.20where.20the.20compiler.20spends.20its.20time.html#148722265">(Nov 28 2018 at 16:02)</a>:</h4>
<p>how does it presently handle "pre-query" time?</p>



<a name="148722284"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/analyzing%20where%20the%20compiler%20spends%20its%20time/near/148722284" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Wesley Wiser <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/analyzing.20where.20the.20compiler.20spends.20its.20time.html#148722284">(Nov 28 2018 at 16:02)</a>:</h4>
<p>@mw I'll look in to that too</p>



<a name="148722308"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/analyzing%20where%20the%20compiler%20spends%20its%20time/near/148722308" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/analyzing.20where.20the.20compiler.20spends.20its.20time.html#148722308">(Nov 28 2018 at 16:03)</a>:</h4>
<p>the big question mark then is "polymorphization"— I'd like to check-in a bit with <span class="user-mention" data-user-id="116015">@Alex Crichton</span> here, as I recall them doing some measurements that seem relevant</p>



<a name="148722310"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/analyzing%20where%20the%20compiler%20spends%20its%20time/near/148722310" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Wesley Wiser <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/analyzing.20where.20the.20compiler.20spends.20its.20time.html#148722310">(Nov 28 2018 at 16:03)</a>:</h4>
<p>I'd have to check. We have some ad-hoc timers for certain things.</p>



<a name="148722318"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/analyzing%20where%20the%20compiler%20spends%20its%20time/near/148722318" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Wesley Wiser <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/analyzing.20where.20the.20compiler.20spends.20its.20time.html#148722318">(Nov 28 2018 at 16:03)</a>:</h4>
<p>Parsing is one of those I think</p>



<a name="148722324"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/analyzing%20where%20the%20compiler%20spends%20its%20time/near/148722324" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/analyzing.20where.20the.20compiler.20spends.20its.20time.html#148722324">(Nov 28 2018 at 16:03)</a>:</h4>
<p>I think the other bullet points are sort of "covered", or at least would be if we tweak self-profile and then run it :)</p>



<a name="148722342"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/analyzing%20where%20the%20compiler%20spends%20its%20time/near/148722342" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> mw <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/analyzing.20where.20the.20compiler.20spends.20its.20time.html#148722342">(Nov 28 2018 at 16:03)</a>:</h4>
<blockquote>
<ul>
<li>rough breakdown of where we spend our time, ideally into something like this?<br>
    - parser<br>
    - resolution/macro-expansion<br>
    - type-checking<br>
    - borrow-checking<br>
    - MIR optimization<br>
    - translation<br>
    - LLVM optimization</li>
</ul>
</blockquote>
<p>This seems like a good references for self-profile categories</p>



<a name="148722393"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/analyzing%20where%20the%20compiler%20spends%20its%20time/near/148722393" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/analyzing.20where.20the.20compiler.20spends.20its.20time.html#148722393">(Nov 28 2018 at 16:04)</a>:</h4>
<p>(I'm not sure if that breakdown is good btw it was just kind of ad-hoc)</p>



<a name="148722413"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/analyzing%20where%20the%20compiler%20spends%20its%20time/near/148722413" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/analyzing.20where.20the.20compiler.20spends.20its.20time.html#148722413">(Nov 28 2018 at 16:04)</a>:</h4>
<p>but I think it sounds "roughly right", maybe a few missing things</p>



<a name="148722427"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/analyzing%20where%20the%20compiler%20spends%20its%20time/near/148722427" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/analyzing.20where.20the.20compiler.20spends.20its.20time.html#148722427">(Nov 28 2018 at 16:04)</a>:</h4>
<p>it'd be interesting to know if there are significant time sinks <em>not</em> on that list</p>



<a name="148722470"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/analyzing%20where%20the%20compiler%20spends%20its%20time/near/148722470" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> mw <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/analyzing.20where.20the.20compiler.20spends.20its.20time.html#148722470">(Nov 28 2018 at 16:05)</a>:</h4>
<p>I'll take a look later and report back if I find anything</p>



<a name="148722478"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/analyzing%20where%20the%20compiler%20spends%20its%20time/near/148722478" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jake Goulding <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/analyzing.20where.20the.20compiler.20spends.20its.20time.html#148722478">(Nov 28 2018 at 16:05)</a>:</h4>
<p>From a self-interest POV, I have a crate that takes ~3s (20s in release) to compile (just doing a <code>touch src/lib.rs</code>). It's not a popular crate, but I think it'd be great if there's enough automated mechanism for people to participate in this by providing info somehow.</p>



<a name="148722567"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/analyzing%20where%20the%20compiler%20spends%20its%20time/near/148722567" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/analyzing.20where.20the.20compiler.20spends.20its.20time.html#148722567">(Nov 28 2018 at 16:06)</a>:</h4>
<p>interesting</p>



<a name="148722587"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/analyzing%20where%20the%20compiler%20spends%20its%20time/near/148722587" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/analyzing.20where.20the.20compiler.20spends.20its.20time.html#148722587">(Nov 28 2018 at 16:07)</a>:</h4>
<p>when we do ad-hoc measurements, as I think <span class="user-mention" data-user-id="124287">@mw</span> and I sort of plan to do,</p>



<a name="148722595"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/analyzing%20where%20the%20compiler%20spends%20its%20time/near/148722595" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/analyzing.20where.20the.20compiler.20spends.20its.20time.html#148722595">(Nov 28 2018 at 16:07)</a>:</h4>
<p>we should definitely document what we are doing and how</p>



<a name="148722607"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/analyzing%20where%20the%20compiler%20spends%20its%20time/near/148722607" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/analyzing.20where.20the.20compiler.20spends.20its.20time.html#148722607">(Nov 28 2018 at 16:07)</a>:</h4>
<p>that would permit us to "crowd-source" a bit</p>



<a name="148722618"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/analyzing%20where%20the%20compiler%20spends%20its%20time/near/148722618" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> mw <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/analyzing.20where.20the.20compiler.20spends.20its.20time.html#148722618">(Nov 28 2018 at 16:07)</a>:</h4>
<p>yeah</p>



<a name="148722631"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/analyzing%20where%20the%20compiler%20spends%20its%20time/near/148722631" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/analyzing.20where.20the.20compiler.20spends.20its.20time.html#148722631">(Nov 28 2018 at 16:07)</a>:</h4>
<p>to start <span class="user-mention" data-user-id="116155">@Jake Goulding</span> you might run with <code>-Zself-profile</code> =)</p>



<a name="148722769"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/analyzing%20where%20the%20compiler%20spends%20its%20time/near/148722769" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> mw <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/analyzing.20where.20the.20compiler.20spends.20its.20time.html#148722769">(Nov 28 2018 at 16:09)</a>:</h4>
<p>though I think we should use perf.rlo as much as we can</p>



<a name="148722780"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/analyzing%20where%20the%20compiler%20spends%20its%20time/near/148722780" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/analyzing.20where.20the.20compiler.20spends.20its.20time.html#148722780">(Nov 28 2018 at 16:09)</a>:</h4>
<p>ok do we feel like we have concrete action items? I have down:</p>
<ul>
<li>measure trait times on the given crates (niko)</li>
<li>measure parallel performance (mw)</li>
<li>tweak self-profile (wesleywiser)</li>
<li>talk to alex about what they measured for polymorph (niko)</li>
</ul>



<a name="148722784"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/analyzing%20where%20the%20compiler%20spends%20its%20time/near/148722784" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/analyzing.20where.20the.20compiler.20spends.20its.20time.html#148722784">(Nov 28 2018 at 16:09)</a>:</h4>
<blockquote>
<p>though I think we should use perf.rlo as much as we can</p>
</blockquote>
<p>yes definitely</p>



<a name="148722842"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/analyzing%20where%20the%20compiler%20spends%20its%20time/near/148722842" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/analyzing.20where.20the.20compiler.20spends.20its.20time.html#148722842">(Nov 28 2018 at 16:10)</a>:</h4>
<p>I would like to see self-profile available for perf.rlo, in particular</p>



<a name="148722854"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/analyzing%20where%20the%20compiler%20spends%20its%20time/near/148722854" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/analyzing.20where.20the.20compiler.20spends.20its.20time.html#148722854">(Nov 28 2018 at 16:10)</a>:</h4>
<p>I had talked to <span class="user-mention" data-user-id="116122">@simulacrum</span> about that, it didn't seem too hard as I recall</p>



<a name="148722867"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/analyzing%20where%20the%20compiler%20spends%20its%20time/near/148722867" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Wesley Wiser <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/analyzing.20where.20the.20compiler.20spends.20its.20time.html#148722867">(Nov 28 2018 at 16:10)</a>:</h4>
<p>They're working on it, I believe</p>



<a name="148722876"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/analyzing%20where%20the%20compiler%20spends%20its%20time/near/148722876" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> mw <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/analyzing.20where.20the.20compiler.20spends.20its.20time.html#148722876">(Nov 28 2018 at 16:10)</a>:</h4>
<p><a href="https://github.com/rust-lang-nursery/rustc-perf/issues/299" target="_blank" title="https://github.com/rust-lang-nursery/rustc-perf/issues/299">https://github.com/rust-lang-nursery/rustc-perf/issues/299</a></p>



<a name="148722878"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/analyzing%20where%20the%20compiler%20spends%20its%20time/near/148722878" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/analyzing.20where.20the.20compiler.20spends.20its.20time.html#148722878">(Nov 28 2018 at 16:10)</a>:</h4>
<p>it'd be great if we could easily get the data for any given test and/or aggregated over sets of tests...</p>



<a name="148722889"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/analyzing%20where%20the%20compiler%20spends%20its%20time/near/148722889" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/analyzing.20where.20the.20compiler.20spends.20its.20time.html#148722889">(Nov 28 2018 at 16:10)</a>:</h4>
<p>ah, nice</p>



<a name="148723078"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/analyzing%20where%20the%20compiler%20spends%20its%20time/near/148723078" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Wesley Wiser <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/analyzing.20where.20the.20compiler.20spends.20its.20time.html#148723078">(Nov 28 2018 at 16:13)</a>:</h4>
<p>I need to run soon. Is there anything else we should talk about?</p>



<a name="148723148"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/analyzing%20where%20the%20compiler%20spends%20its%20time/near/148723148" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> mw <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/analyzing.20where.20the.20compiler.20spends.20its.20time.html#148723148">(Nov 28 2018 at 16:14)</a>:</h4>
<p>I'll post thoughts about the list of categories within the next hour</p>



<a name="148723274"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/analyzing%20where%20the%20compiler%20spends%20its%20time/near/148723274" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> mw <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/analyzing.20where.20the.20compiler.20spends.20its.20time.html#148723274">(Nov 28 2018 at 16:16)</a>:</h4>
<p>other than that, I think we all have something to do for now, right?</p>



<a name="148724640"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/analyzing%20where%20the%20compiler%20spends%20its%20time/near/148724640" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jake Goulding <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/analyzing.20where.20the.20compiler.20spends.20its.20time.html#148724640">(Nov 28 2018 at 16:36)</a>:</h4>
<p>My secret ambition is that y'all teach the compiler to teach me (and other users) how to "make go fast"</p>



<a name="148724730"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/analyzing%20where%20the%20compiler%20spends%20its%20time/near/148724730" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> mw <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/analyzing.20where.20the.20compiler.20spends.20its.20time.html#148724730">(Nov 28 2018 at 16:37)</a>:</h4>
<p>Additional categories might be<br>
- constant evaluation<br>
- type collection (i.e. lowering from HIR to Ty)</p>



<a name="148724839"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/analyzing%20where%20the%20compiler%20spends%20its%20time/near/148724839" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> mw <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/analyzing.20where.20the.20compiler.20spends.20its.20time.html#148724839">(Nov 28 2018 at 16:39)</a>:</h4>
<p>"type collection" (which could use a better name) would include the following:<br>
        [] fn type_of: TypeOfItem(DefId) -&gt; Ty&lt;'tcx&gt;,<br>
        [] fn generics_of: GenericsOfItem(DefId) -&gt; &amp;'tcx ty::Generics,<br>
        [] fn predicates_of: PredicatesOfItem(DefId) -&gt; Lrc&lt;ty::GenericPredicates&lt;'tcx&gt;&gt;,<br>
        [] fn predicates_defined_on: PredicatesDefinedOnItem(DefId)<br>
        [] fn explicit_predicates_of: ExplicitPredicatesOfItem(DefId)<br>
        [] fn inferred_outlives_of: InferredOutlivesOf(DefId) -&gt; Lrc&lt;Vec&lt;ty::Predicate&lt;'tcx&gt;&gt;&gt;,<br>
        [] fn super_predicates_of: SuperPredicatesOfItem(DefId) -&gt; Lrc&lt;ty::GenericPredicates&lt;'tcx&gt;&gt;,<br>
        [] fn type_param_predicates: type_param_predicates((DefId, DefId))<br>
        [] fn trait_def: TraitDefOfItem(DefId) -&gt; &amp;'tcx ty::TraitDef,<br>
        [] fn adt_def: Adt<br>
        [] fn variances_of: ItemVariances(DefId) -&gt; Lrc&lt;Vec&lt;ty::Variance&gt;&gt;,</p>



<a name="148745046"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/analyzing%20where%20the%20compiler%20spends%20its%20time/near/148745046" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> simulacrum <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/analyzing.20where.20the.20compiler.20spends.20its.20time.html#148745046">(Nov 28 2018 at 21:27)</a>:</h4>
<p>Yes, I'm working on the self profile feature -- I ran into a few blocks due to rustc not producing appropriate output (invalid JSON) but I believe they've all been fixed, but I ran out of time last week to work on it because of that</p>



<a name="148880894"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/analyzing%20where%20the%20compiler%20spends%20its%20time/near/148880894" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/analyzing.20where.20the.20compiler.20spends.20its.20time.html#148880894">(Nov 30 2018 at 18:54)</a>:</h4>
<p><span class="user-mention" data-user-id="116122">@simulacrum</span> question — for the serde-* stuff on prof, do we have any scenario that tests "code using serde"?</p>



<a name="148880904"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/analyzing%20where%20the%20compiler%20spends%20its%20time/near/148880904" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> simulacrum <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/analyzing.20where.20the.20compiler.20spends.20its.20time.html#148880904">(Nov 30 2018 at 18:55)</a>:</h4>
<p>I think cargo does, for example</p>



<a name="148881280"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/analyzing%20where%20the%20compiler%20spends%20its%20time/near/148881280" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/analyzing.20where.20the.20compiler.20spends.20its.20time.html#148881280">(Nov 30 2018 at 19:00)</a>:</h4>
<p>ok but not one named "serde" :)</p>



<a name="148881283"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/analyzing%20where%20the%20compiler%20spends%20its%20time/near/148881283" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/analyzing.20where.20the.20compiler.20spends.20its.20time.html#148881283">(Nov 30 2018 at 19:00)</a>:</h4>
<p>(and not a "canonical" one)</p>



<a name="148881412"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/analyzing%20where%20the%20compiler%20spends%20its%20time/near/148881412" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> simulacrum <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/analyzing.20where.20the.20compiler.20spends.20its.20time.html#148881412">(Nov 30 2018 at 19:02)</a>:</h4>
<p><span class="user-mention" data-user-id="116009">@nikomatsakis</span> Is that what you were referring to?</p>



<a name="148881413"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/analyzing%20where%20the%20compiler%20spends%20its%20time/near/148881413" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> simulacrum <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/analyzing.20where.20the.20compiler.20spends.20its.20time.html#148881413">(Nov 30 2018 at 19:02)</a>:</h4>
<p>Oh, you mean other proc macros?</p>



<a name="148881414"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/analyzing%20where%20the%20compiler%20spends%20its%20time/near/148881414" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> simulacrum <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/analyzing.20where.20the.20compiler.20spends.20its.20time.html#148881414">(Nov 30 2018 at 19:02)</a>:</h4>
<p>Maybe the servo crates? They have proc macros of their own</p>



<a name="148881415"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/analyzing%20where%20the%20compiler%20spends%20its%20time/near/148881415" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> simulacrum <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/analyzing.20where.20the.20compiler.20spends.20its.20time.html#148881415">(Nov 30 2018 at 19:02)</a>:</h4>
<p><a href="http://crates.io" target="_blank" title="http://crates.io">crates.io</a> uses diesel, I believe</p>



<a name="148881416"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/analyzing%20where%20the%20compiler%20spends%20its%20time/near/148881416" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> simulacrum <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/analyzing.20where.20the.20compiler.20spends.20its.20time.html#148881416">(Nov 30 2018 at 19:02)</a>:</h4>
<p>then.. no, I don't think so</p>



<a name="148881486"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/analyzing%20where%20the%20compiler%20spends%20its%20time/near/148881486" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> simulacrum <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/analyzing.20where.20the.20compiler.20spends.20its.20time.html#148881486">(Nov 30 2018 at 19:03)</a>:</h4>
<p>uh Zulip is displaying my messages way out of order -- I think my wifi is being quite flaky right now -- but I would say that servo is the most non-canonical example of proc macro use, but it's also a lot so isn't the best example</p>



<a name="148881536"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/analyzing%20where%20the%20compiler%20spends%20its%20time/near/148881536" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> simulacrum <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/analyzing.20where.20the.20compiler.20spends.20its.20time.html#148881536">(Nov 30 2018 at 19:04)</a>:</h4>
<p>I'd be happy to add another benchmark if you'd like</p>



<a name="148881995"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/analyzing%20where%20the%20compiler%20spends%20its%20time/near/148881995" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/analyzing.20where.20the.20compiler.20spends.20its.20time.html#148881995">(Nov 30 2018 at 19:10)</a>:</h4>
<p>ok not sure 100% what I want tbh :)</p>



<a name="148882010"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/analyzing%20where%20the%20compiler%20spends%20its%20time/near/148882010" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/analyzing.20where.20the.20compiler.20spends.20its.20time.html#148882010">(Nov 30 2018 at 19:11)</a>:</h4>
<p>apparently I can't build the script crate without having installed X11</p>



<a name="148882014"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/analyzing%20where%20the%20compiler%20spends%20its%20time/near/148882014" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/analyzing.20where.20the.20compiler.20spends.20its.20time.html#148882014">(Nov 30 2018 at 19:11)</a>:</h4>
<p>which.. I guess I can do :P</p>



<a name="148882730"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/analyzing%20where%20the%20compiler%20spends%20its%20time/near/148882730" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/analyzing.20where.20the.20compiler.20spends.20its.20time.html#148882730">(Nov 30 2018 at 19:23)</a>:</h4>
<p>so far, I've found trait solving seems to occupy relatively little (0-5%) of the time in the crates I've looked at (serde, style)</p>



<a name="148882734"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/analyzing%20where%20the%20compiler%20spends%20its%20time/near/148882734" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/analyzing.20where.20the.20compiler.20spends.20its.20time.html#148882734">(Nov 30 2018 at 19:23)</a>:</h4>
<p>it's lower than I expected, really</p>



<a name="148883604"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/analyzing%20where%20the%20compiler%20spends%20its%20time/near/148883604" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/analyzing.20where.20the.20compiler.20spends.20its.20time.html#148883604">(Nov 30 2018 at 19:37)</a>:</h4>
<p><span class="user-mention" data-user-id="116122">@simulacrum</span> if I'm running locally ...</p>



<a name="148883620"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/analyzing%20where%20the%20compiler%20spends%20its%20time/near/148883620" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/analyzing.20where.20the.20compiler.20spends.20its.20time.html#148883620">(Nov 30 2018 at 19:37)</a>:</h4>
<p>hmm</p>



<a name="148883622"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/analyzing%20where%20the%20compiler%20spends%20its%20time/near/148883622" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/analyzing.20where.20the.20compiler.20spends.20its.20time.html#148883622">(Nov 30 2018 at 19:37)</a>:</h4>
<p>I geuss there are tools to "run the harness"</p>



<a name="148883630"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/analyzing%20where%20the%20compiler%20spends%20its%20time/near/148883630" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/analyzing.20where.20the.20compiler.20spends.20its.20time.html#148883630">(Nov 30 2018 at 19:37)</a>:</h4>
<p>I should really use those instead of doing everything manually :)</p>



<a name="148883636"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/analyzing%20where%20the%20compiler%20spends%20its%20time/near/148883636" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/analyzing.20where.20the.20compiler.20spends.20its.20time.html#148883636">(Nov 30 2018 at 19:37)</a>:</h4>
<p>sorry, that wasn't a question</p>



<a name="148883642"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/analyzing%20where%20the%20compiler%20spends%20its%20time/near/148883642" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/analyzing.20where.20the.20compiler.20spends.20its.20time.html#148883642">(Nov 30 2018 at 19:37)</a>:</h4>
<p>perhaps an actual question is:</p>



<a name="148883654"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/analyzing%20where%20the%20compiler%20spends%20its%20time/near/148883654" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/analyzing.20where.20the.20compiler.20spends.20its.20time.html#148883654">(Nov 30 2018 at 19:37)</a>:</h4>
<p>I can use <code>perf record</code> on the harness itsel</p>



<a name="148883663"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/analyzing%20where%20the%20compiler%20spends%20its%20time/near/148883663" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/analyzing.20where.20the.20compiler.20spends.20its.20time.html#148883663">(Nov 30 2018 at 19:37)</a>:</h4>
<p>it'll have some noise, but I guess the vast majority of time is running rustc so it's not that interesting</p>



<a name="148883710"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/analyzing%20where%20the%20compiler%20spends%20its%20time/near/148883710" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/analyzing.20where.20the.20compiler.20spends.20its.20time.html#148883710">(Nov 30 2018 at 19:38)</a>:</h4>
<p>is there some way though to introduce a per-test-scenario use of <code>perf</code>?</p>



<a name="148883711"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/analyzing%20where%20the%20compiler%20spends%20its%20time/near/148883711" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/analyzing.20where.20the.20compiler.20spends.20its.20time.html#148883711">(Nov 30 2018 at 19:38)</a>:</h4>
<p>(not on the server, just locally)</p>



<a name="148883794"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/analyzing%20where%20the%20compiler%20spends%20its%20time/near/148883794" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/analyzing.20where.20the.20compiler.20spends.20its.20time.html#148883794">(Nov 30 2018 at 19:40)</a>:</h4>
<p>you mean profiling using rustc-perf ? like <a href="https://github.com/rust-lang-nursery/rustc-perf/tree/master/collector#profiling" target="_blank" title="https://github.com/rust-lang-nursery/rustc-perf/tree/master/collector#profiling">this</a> ?</p>



<a name="148883959"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/analyzing%20where%20the%20compiler%20spends%20its%20time/near/148883959" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/analyzing.20where.20the.20compiler.20spends.20its.20time.html#148883959">(Nov 30 2018 at 19:42)</a>:</h4>
<p>lol um yes</p>



<a name="148883964"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/analyzing%20where%20the%20compiler%20spends%20its%20time/near/148883964" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/analyzing.20where.20the.20compiler.20spends.20its.20time.html#148883964">(Nov 30 2018 at 19:42)</a>:</h4>
<p>I sort of remember those docs now</p>



<a name="148883971"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/analyzing%20where%20the%20compiler%20spends%20its%20time/near/148883971" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/analyzing.20where.20the.20compiler.20spends.20its.20time.html#148883971">(Nov 30 2018 at 19:42)</a>:</h4>
<p>anyway right now I'm just trying to get that stuff to build</p>



<a name="148883973"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/analyzing%20where%20the%20compiler%20spends%20its%20time/near/148883973" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/analyzing.20where.20the.20compiler.20spends.20its.20time.html#148883973">(Nov 30 2018 at 19:42)</a>:</h4>
<p>I recently reinstalled my OS and don't have a lot of base packages it seems</p>



<a name="148883975"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/analyzing%20where%20the%20compiler%20spends%20its%20time/near/148883975" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/analyzing.20where.20the.20compiler.20spends.20its.20time.html#148883975">(Nov 30 2018 at 19:42)</a>:</h4>
<p>e.g., openssl-dev...</p>



<a name="148884548"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/analyzing%20where%20the%20compiler%20spends%20its%20time/near/148884548" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/analyzing.20where.20the.20compiler.20spends.20its.20time.html#148884548">(Nov 30 2018 at 19:51)</a>:</h4>
<p>right now I just get </p>
<div class="codehilite"><pre><span></span>error: failed to run custom build command for `openssl v0.9.24`
process didn&#39;t exit successfully: `/home/nmatsakis/versioned/rustc-perf/target/release/build/openssl-7743ee6a3ccb90da/build-script-build` (exit code: 101)
--- stderr
thread &#39;main&#39; panicked at &#39;Unable to detect OpenSSL version&#39;, /home/nmatsakis/.cargo/registry/src/github.com-1ecc6299db9ec823/openssl-0.9.24/build.rs:16:14
note: Run with `RUST_BACKTRACE=1` for a backtrace.

warning: build failed, waiting for other jobs to finish...
</pre></div>


<p>but I think I have everything installed I'm supposed to have :/</p>



<a name="148884667"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/analyzing%20where%20the%20compiler%20spends%20its%20time/near/148884667" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> QuietMisdreavus <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/analyzing.20where.20the.20compiler.20spends.20its.20time.html#148884667">(Nov 30 2018 at 19:53)</a>:</h4>
<p><span class="user-mention" data-user-id="116009">@nikomatsakis</span> out of curiosity, what does <code>openssl version</code> say?</p>



<a name="148884731"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/analyzing%20where%20the%20compiler%20spends%20its%20time/near/148884731" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> QuietMisdreavus <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/analyzing.20where.20the.20compiler.20spends.20its.20time.html#148884731">(Nov 30 2018 at 19:54)</a>:</h4>
<p>openssl 0.9.24 is an old release of the crate, and i don't think it supports the latest openssl</p>



<a name="148884743"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/analyzing%20where%20the%20compiler%20spends%20its%20time/near/148884743" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> QuietMisdreavus <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/analyzing.20where.20the.20compiler.20spends.20its.20time.html#148884743">(Nov 30 2018 at 19:54)</a>:</h4>
<p>(i've had problems with it when arch moved from openssl 1.0 to 1.1)</p>



<a name="148884869"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/analyzing%20where%20the%20compiler%20spends%20its%20time/near/148884869" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/analyzing.20where.20the.20compiler.20spends.20its.20time.html#148884869">(Nov 30 2018 at 19:56)</a>:</h4>
<p>yeah looks like openssl 1.0.1+ requires rust-openssl 0.10</p>



<a name="148885158"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/analyzing%20where%20the%20compiler%20spends%20its%20time/near/148885158" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/analyzing.20where.20the.20compiler.20spends.20its.20time.html#148885158">(Nov 30 2018 at 20:00)</a>:</h4>
<p>ah</p>



<a name="148885170"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/analyzing%20where%20the%20compiler%20spends%20its%20time/near/148885170" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/analyzing.20where.20the.20compiler.20spends.20its.20time.html#148885170">(Nov 30 2018 at 20:00)</a>:</h4>
<p><span class="user-mention" data-user-id="133692">@QuietMisdreavus</span> I get </p>
<div class="codehilite"><pre><span></span>OpenSSL 1.1.1 FIPS  11 Sep 2018
</pre></div>



<a name="148885172"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/analyzing%20where%20the%20compiler%20spends%20its%20time/near/148885172" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/analyzing.20where.20the.20compiler.20spends.20its.20time.html#148885172">(Nov 30 2018 at 20:00)</a>:</h4>
<p>I wonder where that dependency comes from</p>



<a name="148885179"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/analyzing%20where%20the%20compiler%20spends%20its%20time/near/148885179" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/analyzing.20where.20the.20compiler.20spends.20its.20time.html#148885179">(Nov 30 2018 at 20:00)</a>:</h4>
<p>(I filed <a href="https://github.com/sfackler/rust-openssl/issues/1024" target="_blank" title="https://github.com/sfackler/rust-openssl/issues/1024">https://github.com/sfackler/rust-openssl/issues/1024</a>, as an aside)</p>



<a name="148885216"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/analyzing%20where%20the%20compiler%20spends%20its%20time/near/148885216" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/analyzing.20where.20the.20compiler.20spends.20its.20time.html#148885216">(Nov 30 2018 at 20:01)</a>:</h4>
<p><a href="https://github.com/sfackler/rust-openssl/issues/987#issuecomment-419246104" target="_blank" title="https://github.com/sfackler/rust-openssl/issues/987#issuecomment-419246104">https://github.com/sfackler/rust-openssl/issues/987#issuecomment-419246104</a></p>



<a name="148885221"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/analyzing%20where%20the%20compiler%20spends%20its%20time/near/148885221" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> QuietMisdreavus <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/analyzing.20where.20the.20compiler.20spends.20its.20time.html#148885221">(Nov 30 2018 at 20:01)</a>:</h4>
<p>yup, too new, i bet</p>



<a name="148885287"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/analyzing%20where%20the%20compiler%20spends%20its%20time/near/148885287" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/analyzing.20where.20the.20compiler.20spends.20its.20time.html#148885287">(Nov 30 2018 at 20:02)</a>:</h4>
<p>grr</p>



<a name="148885344"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/analyzing%20where%20the%20compiler%20spends%20its%20time/near/148885344" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/analyzing.20where.20the.20compiler.20spends.20its.20time.html#148885344">(Nov 30 2018 at 20:03)</a>:</h4>
<p>there's about a bajillion things that depend on openssl 0.9</p>



<a name="148885423"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/analyzing%20where%20the%20compiler%20spends%20its%20time/near/148885423" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/analyzing.20where.20the.20compiler.20spends.20its.20time.html#148885423">(Nov 30 2018 at 20:04)</a>:</h4>
<p>according to <code>cargo tree</code> anyway :)</p>



<a name="148885531"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/analyzing%20where%20the%20compiler%20spends%20its%20time/near/148885531" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/analyzing.20where.20the.20compiler.20spends.20its.20time.html#148885531">(Nov 30 2018 at 20:06)</a>:</h4>
<p>maybe there's a way to install an older version of openssl...</p>



<a name="148888735"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/analyzing%20where%20the%20compiler%20spends%20its%20time/near/148888735" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/analyzing.20where.20the.20compiler.20spends.20its.20time.html#148888735">(Nov 30 2018 at 20:56)</a>:</h4>
<p>gah.  I can't  get this to build at all</p>



<a name="148888742"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/analyzing%20where%20the%20compiler%20spends%20its%20time/near/148888742" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/analyzing.20where.20the.20compiler.20spends.20its.20time.html#148888742">(Nov 30 2018 at 20:56)</a>:</h4>
<p>/me throws up hands in frustration</p>



<a name="150685654"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/analyzing%20where%20the%20compiler%20spends%20its%20time/near/150685654" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nagisa <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/analyzing.20where.20the.20compiler.20spends.20its.20time.html#150685654">(Dec 01 2018 at 14:34)</a>:</h4>
<p>I’ve noticed that compiler always gets into some stage that is not parallelized at all multiple times within a compilation</p>



<a name="150685669"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/analyzing%20where%20the%20compiler%20spends%20its%20time/near/150685669" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nagisa <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/analyzing.20where.20the.20compiler.20spends.20its.20time.html#150685669">(Dec 01 2018 at 14:35)</a>:</h4>
<p>that is, it stays at 100% CPU for a while, then jumps to somewhere near 1600, then back to 100, then to 1600 while it is codegenning and finally falls of once there are not enough codegen units to saturate the cores</p>



<a name="150685712"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/analyzing%20where%20the%20compiler%20spends%20its%20time/near/150685712" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nagisa <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/analyzing.20where.20the.20compiler.20spends.20its.20time.html#150685712">(Dec 01 2018 at 14:36)</a>:</h4>
<p>we might win something if we made those sequential parts more parallel <span class="emoji emoji-1f642" title="slight smile">:slight_smile:</span></p>



<a name="150685743"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/analyzing%20where%20the%20compiler%20spends%20its%20time/near/150685743" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nagisa <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/analyzing.20where.20the.20compiler.20spends.20its.20time.html#150685743">(Dec 01 2018 at 14:37)</a>:</h4>
<p>which reminds me, this <code>-Zself-profile</code> output (since it does not <em>yet</em> output a full trace) lacks distinction between <em>user</em> time and <em>cpu</em> time, there might be some value in making that distinction and displaying it somehow.</p>



<a name="150686188"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/analyzing%20where%20the%20compiler%20spends%20its%20time/near/150686188" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Zoxc <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/analyzing.20where.20the.20compiler.20spends.20its.20time.html#150686188">(Dec 01 2018 at 14:52)</a>:</h4>
<p>I've found that around 80 codegen units is ideal, with parallel queries =P</p>



<a name="150686310"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/analyzing%20where%20the%20compiler%20spends%20its%20time/near/150686310" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Zoxc <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/analyzing.20where.20the.20compiler.20spends.20its.20time.html#150686310">(Dec 01 2018 at 14:57)</a>:</h4>
<p>Can we get a beta build with parallel queries enabled? So I can build rustc using it</p>



<a name="150686428"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/analyzing%20where%20the%20compiler%20spends%20its%20time/near/150686428" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> simulacrum <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/analyzing.20where.20the.20compiler.20spends.20its.20time.html#150686428">(Dec 01 2018 at 15:00)</a>:</h4>
<p><span class="user-mention" data-user-id="116466">@Zoxc</span> You can always build it yourself and specify it in <code>rustc=</code> in config.toml</p>



<a name="150686430"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/analyzing%20where%20the%20compiler%20spends%20its%20time/near/150686430" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> simulacrum <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/analyzing.20where.20the.20compiler.20spends.20its.20time.html#150686430">(Dec 01 2018 at 15:01)</a>:</h4>
<p>I don't think it'll be easy to get a proper beta build though (since queries are probably not stable enough for wide distribution)</p>



<a name="150686876"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/analyzing%20where%20the%20compiler%20spends%20its%20time/near/150686876" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Zoxc <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/analyzing.20where.20the.20compiler.20spends.20its.20time.html#150686876">(Dec 01 2018 at 15:17)</a>:</h4>
<p><span class="user-mention" data-user-id="116122">@simulacrum</span> Well I want something prebuild so I could use it just by <code>./x.py -p check</code> or something like that. Doesn't have to be something proper</p>



<a name="150686923"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/analyzing%20where%20the%20compiler%20spends%20its%20time/near/150686923" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> simulacrum <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/analyzing.20where.20the.20compiler.20spends.20its.20time.html#150686923">(Dec 01 2018 at 15:18)</a>:</h4>
<p>I don't think we publish artifacts right now -- you could possibly put up a PR that enables it by default, run bors try, and use those artifacts...</p>



<a name="150686927"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/analyzing%20where%20the%20compiler%20spends%20its%20time/near/150686927" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> simulacrum <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/analyzing.20where.20the.20compiler.20spends.20its.20time.html#150686927">(Dec 01 2018 at 15:18)</a>:</h4>
<p>(that PR could target beta to have the beta compiler)</p>



<a name="150842743"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/analyzing%20where%20the%20compiler%20spends%20its%20time/near/150842743" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/analyzing.20where.20the.20compiler.20spends.20its.20time.html#150842743">(Dec 04 2018 at 12:23)</a>:</h4>
<p>ps <span class="user-mention" data-user-id="116122">@simulacrum</span> seems like I can build rustc-perf now, thanks!</p>



<a name="150842746"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/analyzing%20where%20the%20compiler%20spends%20its%20time/near/150842746" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/analyzing.20where.20the.20compiler.20spends.20its.20time.html#150842746">(Dec 04 2018 at 12:23)</a>:</h4>
<p>I'm sure you pinged me on discord, I've got a lot of pending pings there, harder to keep up with those</p>



<a name="151008652"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/analyzing%20where%20the%20compiler%20spends%20its%20time/near/151008652" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/analyzing.20where.20the.20compiler.20spends.20its.20time.html#151008652">(Dec 06 2018 at 14:09)</a>:</h4>
<p>ok so <span class="user-mention" data-user-id="124287">@mw</span>, <span class="user-mention" data-user-id="125250">@Wesley Wiser</span> —</p>
<p>I managed to gather some usable perf stats from all the benchmarks now. I've created a <a href="https://docs.google.com/spreadsheets/d/10lke3DOSZuopYHE2R7iL3EK8v0dSqH5bJ7Z31UYKsOA/edit?usp=sharing" target="_blank" title="https://docs.google.com/spreadsheets/d/10lke3DOSZuopYHE2R7iL3EK8v0dSqH5bJ7Z31UYKsOA/edit?usp=sharing">google spreadsheet</a> mapping out how much time each of the tests spends in trait analysis + type-checking (note that these are two distinct sheets, and that these times are overlapping).</p>



<a name="151008656"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/analyzing%20where%20the%20compiler%20spends%20its%20time/near/151008656" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/analyzing.20where.20the.20compiler.20spends.20its.20time.html#151008656">(Dec 06 2018 at 14:09)</a>:</h4>
<p>I can also do other slices as we like</p>



<a name="151008662"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/analyzing%20where%20the%20compiler%20spends%20its%20time/near/151008662" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/analyzing.20where.20the.20compiler.20spends.20its.20time.html#151008662">(Dec 06 2018 at 14:09)</a>:</h4>
<p>this is from a run using the beta compiler :)</p>



<a name="151010081"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/analyzing%20where%20the%20compiler%20spends%20its%20time/near/151010081" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> simulacrum <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/analyzing.20where.20the.20compiler.20spends.20its.20time.html#151010081">(Dec 06 2018 at 14:29)</a>:</h4>
<p><span class="user-mention" data-user-id="116009">@nikomatsakis</span> Is that spreadsheet perhaps very selectively shared? I at least can't access it :)</p>



<a name="151011416"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/analyzing%20where%20the%20compiler%20spends%20its%20time/near/151011416" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Wesley Wiser <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/analyzing.20where.20the.20compiler.20spends.20its.20time.html#151011416">(Dec 06 2018 at 14:47)</a>:</h4>
<p><span class="user-mention" data-user-id="116009">@nikomatsakis</span> I also cannot access it :)</p>



<a name="151012132"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/analyzing%20where%20the%20compiler%20spends%20its%20time/near/151012132" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/analyzing.20where.20the.20compiler.20spends.20its.20time.html#151012132">(Dec 06 2018 at 14:59)</a>:</h4>
<p>oops</p>



<a name="151012185"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/analyzing%20where%20the%20compiler%20spends%20its%20time/near/151012185" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/analyzing.20where.20the.20compiler.20spends.20its.20time.html#151012185">(Dec 06 2018 at 15:00)</a>:</h4>
<p><a href="https://docs.google.com/spreadsheets/d/10lke3DOSZuopYHE2R7iL3EK8v0dSqH5bJ7Z31UYKsOA/edit?usp=sharing" target="_blank" title="https://docs.google.com/spreadsheets/d/10lke3DOSZuopYHE2R7iL3EK8v0dSqH5bJ7Z31UYKsOA/edit?usp=sharing">updated link</a></p>



<a name="151012219"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/analyzing%20where%20the%20compiler%20spends%20its%20time/near/151012219" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/analyzing.20where.20the.20compiler.20spends.20its.20time.html#151012219">(Dec 06 2018 at 15:00)</a>:</h4>
<p><span class="user-mention" data-user-id="125250">@Wesley Wiser</span>, <span class="user-mention" data-user-id="116122">@simulacrum</span> <span class="emoji emoji-1f446" title="point up">:point_up:</span></p>



<a name="151012233"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/analyzing%20where%20the%20compiler%20spends%20its%20time/near/151012233" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/analyzing.20where.20the.20compiler.20spends.20its.20time.html#151012233">(Dec 06 2018 at 15:00)</a>:</h4>
<p>I'm not <em>100%</em> confident in those numbers, maybe 90-95% :P</p>



<a name="151012238"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/analyzing%20where%20the%20compiler%20spends%20its%20time/near/151012238" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/analyzing.20where.20the.20compiler.20spends.20its.20time.html#151012238">(Dec 06 2018 at 15:00)</a>:</h4>
<p>I'm debating about how to slice them better</p>



<a name="151012258"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/analyzing%20where%20the%20compiler%20spends%20its%20time/near/151012258" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/analyzing.20where.20the.20compiler.20spends.20its.20time.html#151012258">(Dec 06 2018 at 15:00)</a>:</h4>
<p>e.g. I'd like to see them grouped by stuff "all check things"</p>



<a name="151012264"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/analyzing%20where%20the%20compiler%20spends%20its%20time/near/151012264" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/analyzing.20where.20the.20compiler.20spends.20its.20time.html#151012264">(Dec 06 2018 at 15:01)</a>:</h4>
<p>I guess I can do this in google docs if I learn how</p>



<a name="151012269"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/analyzing%20where%20the%20compiler%20spends%20its%20time/near/151012269" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/analyzing.20where.20the.20compiler.20spends.20its.20time.html#151012269">(Dec 06 2018 at 15:01)</a>:</h4>
<p>or I could edit my script :)</p>



<a name="151012308"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/analyzing%20where%20the%20compiler%20spends%20its%20time/near/151012308" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/analyzing.20where.20the.20compiler.20spends.20its.20time.html#151012308">(Dec 06 2018 at 15:01)</a>:</h4>
<blockquote>
<p>I'm not <em>100%</em> confident in those numbers, maybe 90-95% :P</p>
</blockquote>
<p>in particular, when I inspect the stack traces I get from <code>perf script -i</code>, they look... correct-ish, but sometimes smaller than I expect</p>



<a name="151012354"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/analyzing%20where%20the%20compiler%20spends%20its%20time/near/151012354" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/analyzing.20where.20the.20compiler.20spends.20its.20time.html#151012354">(Dec 06 2018 at 15:02)</a>:</h4>
<p>note also that to gather those numbers, I had to disable frame-pointer optimization</p>



<a name="151015496"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/analyzing%20where%20the%20compiler%20spends%20its%20time/near/151015496" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/analyzing.20where.20the.20compiler.20spends.20its.20time.html#151015496">(Dec 06 2018 at 15:40)</a>:</h4>
<p>so I was looking back at this list from before:</p>
<ul>
<li>parser</li>
<li>resolution/macro-expansion</li>
<li>type-checking -- search for <code>librustc_typeck::check</code></li>
<li>borrow-checking -- search for <code>librustc_borrowck</code> or <code>librustc_mir::borrow_check</code></li>
<li>MIR optimization</li>
<li>translation</li>
<li>LLVM optimization</li>
</ul>
<p>need to find good things to search for on the stack to identify each of those categories...</p>



<hr><p>Last updated: Aug 07 2021 at 22:04 UTC</p>
</html>